TCP服务器端代码:
1 // TcpSrv.cpp: 定义控制台应用程序的入口点。 2 // 3 4 #include "stdafx.h" 5 #include<Windows.h> 6 #pragma comment(lib,"ws2_32.lib") 7 8 int main() 9 { 10 //************加载套接字库***************** 11 WORD wVersionRequested; 12 WSADATA wsaData; 13 int err; 14 15 wVersionRequested = MAKEWORD(2,2);//Winsock库版本,低字节代表主版本,高字节代表副版本 16 err = WSAStartup(wVersionRequested, &wsaData); 17 if (err != 0) 18 { 19 return false; 20 } 21 if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2) 22 { 23 WSACleanup();//终止对winsock库的使用 24 return false; 25 } 26 27 //***********创建套接字******************** 28 29 //parameter int af:指定协议族,即网际域,Windows平台总是AF_INET或TF_INET 30 //parameter int type:套接字类型 31 //parameter int protocal:协议类型,一般设为0,自动设置 32 SOCKET sockSrv = socket(AF_INET,SOCK_STREAM,0); 33 34 //************绑定到本机地址和端口*********** 35 SOCKADDR_IN addrSrv;//本机地址结构体信息,除了sin_family,其它字段都需要采用网络字节序 36 addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);//htonl转换为网络字节序,转换的是u_long类型 37 addrSrv.sin_family = AF_INET; 38 addrSrv.sin_port = htons(6000);//htons转换为网络字节序,转换的是u_short类型 39 40 //绑定,由于第二个参数会随网络协议的不同而变化,所以第三个参数指定地址结构的长度 41 bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(addrSrv)); 42 43 //*************监听************************ 44 listen(sockSrv,5);//5表示连接队列 45 46 while (1) 47 { 48 SOCKADDR_IN addrClient;//用于接收客户端的地址信息 49 int len = sizeof(SOCKADDR);//这个参数必须初始化 50 51 //*************建立连接************************ 52 //接受客户端的连接,返回一个新的套接字。之前的套接字sockSrv依然用于监听 53 SOCKET sockConn = accept(sockSrv,(SOCKADDR*)&addrClient,&len); 54 55 //*************发送数据************************ 56 char sendBuf[100]; 57 //inet_ntoa表示将网络用的ip地址转换为点分十进制的形式,并返回成字符串 58 //inet_addr将点分十进制地址转换为一个无符号整形表示形式 59 sprintf(sendBuf,"Welcome %s to here!",inet_ntoa(addrClient.sin_addr)); 60 61 send(sockConn, sendBuf, strlen(sendBuf) + 1,0); 62 63 //*************接收数据************************ 64 char recvBuf[100]; 65 recv(sockConn,recvBuf,100,0); 66 printf("%s",recvBuf); 67 68 //*************关闭套接字********************** 69 closesocket(sockConn); 70 } 71 // 退出while循环后,关闭sockSrv以及清理套接字即可 72 73 return 0; 74 }