Socket TCP/IP 客户端编程步骤

  1. socket()/WSASocket() //创建一个客户端socket
  2. Address resolution //指定服务端地址
  3. connect()/WSAConnet() //与服务端建立连接

    1.创建一个客户端socket

    socket()/WSASocket()
    1. SOCKET ClientSocket;
    2. ClientSocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
    创建失败返回INVALID_SOCKET

2.指定服务端地址

Address resolution

  1. SOCKADDR_IN ServerAddr; // 服务器地址
  2. ServerAddr.sin_family=AF_INET; // 填充 SOCKADDR_IN 数据结构
  3. ServerAddr.sin_port=htons(port);
  4. ServerAddr.sin_addr.s_addr=inet_addr("127.0.0.1");

3.与服务端建立连接

connect()/WSAConnet()

  1. connect(SOCKET s,const struct sockaddr FAR * name,int namelen);

连接失败返回INVALID_SOCKET
现在你已经可以写一个完整的Socket TCP/IP 客户端了,代码如下:

  1. #include <Winsock2.h>
  2. #include <iostream>
  3. #define PORT 5000
  4. using namespace std;
  5. int main(void)
  6. {
  7. WSADATA wsaData; // Winsock数据结构
  8. SOCKET ClientSocket; // 客户端socket
  9. SOCKADDR_IN ServerAddr; // 服务器地址
  10. int port=PORT; // 端口号
  11. WSAStartup(MAKEWORD(2,2),&wsaData); // 初始化 Winsock 2.2 版本
  12. ClientSocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); // 创建客户端socket
  13. ServerAddr.sin_family=AF_INET; // 填充 SOCKADDR_IN 数据结构
  14. ServerAddr.sin_port=htons(port);
  15. ServerAddr.sin_addr.s_addr=inet_addr("127.0.0.1");
  16. connect(ClientSocket,(SOCKADDR*)&ServerAddr,sizeof(ServerAddr));
  17. closesocket(ClientSocket); // 关闭socket
  18. WSACleanup(); // 关闭Winsock
  19. return 0;
  20. }

下一章将详解send()/WSASend() 、 recv()/WSARecv() 和 函数,然后就可以编写一个可运行的通讯程序了