C++网络编程--TCP客户端端

工程-》设置》连接》 ws2_32.lib 到“对象/库模块”中

#include <WINSOCK2.H>

#include <STDIO.H>//使用了c的输入输出


void main()
{ 
//一,
//1.要加载套接字库用WSAStartup
//2.WSAStartup有两个参数:wsaData,wVersionRequested
//3.wsaData:存放要加载的库版本的有关信息结构体
//  wVersionRequested:版本好
int err;
WORD wVersionRequested = MAKEWORD(1,1);
WSADATA wsaData;

err = WSAStartup(wVersionRequested,&wsaData);
if (err != 0)
{
return;
}

//判断版本号是不是1.1.高字节代表Winsock副版本
//低字节代表Winsock主版本
if (LOBYTE(wsaData.wVersion != 1) || 
HIBYTE(wsaData.wVersion) != 1)
{
WSACleanup();
return;
}


//二 套接字
/*参数1:指定地址族,对于TCP/IP协议的套接字,它只能是AF_INET(或PF_INET)
 参数2:指定Socket类型,对于1.1版本套接字只支持SOCK_STREAM流式套接字,SOCK_DGRAM数据报套接字
 参数3:与特定的家族相关的协议。0,函数会自动根据地址格式和套接字类别,选择合适的协议
 返回:成功返回SOCKET对象;失败返回INVALID_SOCKET,错误信息可通过WSAGetLastError函数返回*/
SOCKET sockClient = socket(AF_INET,SOCK_STREAM,0);


/*函數:int connect(SOCKET s,const struct sockaddr FAR *name,int namelen);
 參數1:套接字
 參數2:地址結構體指針,設定連接的服務器的信息
 參數3:地址結構體的長度
*/
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");//服务器端的IP
addrSrv.sin_family = AF_INET;
addrSrv.sin_port = htons(6000);//服务器的端口


connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));


char recvBuf[100];
recv(sockClient,recvBuf,100,0);
printf("%s\n",recvBuf);
send(sockClient,"This is client!",strlen("This is client!")+1,0);


closesocket(sockClient);
WSACleanup();
}

你可能感兴趣的:(编程,C++,网络,socket,Stream)