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 }
TCP客戶端端代碼:

1 // TcpClient.cpp: 定義控制台應用程序的入口點。 2 // 3 4 #include "stdafx.h" 5 #include<Winsock2.h> 6 #pragma comment(lib,"ws2_32.lib") 7 int main() 8 { 9 //************加載套接字庫***************** 10 WORD wVersionRequested; 11 WSADATA wsaData; 12 int err; 13 wVersionRequested = MAKEWORD(2,2); 14 err = WSAStartup(wVersionRequested,&wsaData); 15 if (err != 0) 16 { 17 return false; 18 } 19 if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2) 20 { 21 WSACleanup(); 22 return false; 23 } 24 25 //***********創建套接字******************** 26 SOCKET sockClient = socket(AF_INET,SOCK_STREAM,0); 27 28 //************連接服務器******************* 29 SOCKADDR_IN addrSrv; 30 addrSrv.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); 31 addrSrv.sin_family = AF_INET; 32 addrSrv.sin_port = htons(6000); 33 connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)); 34 35 //************接收數據********************* 36 char recvBuf[100]; 37 recv(sockClient,recvBuf,100,0); 38 printf("%s\n",recvBuf); 39 //************發送數據********************* 40 send(sockClient,"This is Client",strlen("This is Client")+1,0); 41 42 closesocket(sockClient);//關閉套接字 43 WSACleanup();//終止套接字庫的使用 44 45 system("pause"); 46 return 0; 47 }
UDP服務端代碼:

1 // udpSrv.cpp: 定義控制台應用程序的入口點。 2 // 3 4 #include "stdafx.h" 5 #include<WinSock2.h> 6 #pragma comment(lib, "ws2_32.lib") 7 int main() 8 { 9 //*************加載套接字庫*************** 10 WORD wVersionRequested; 11 WSADATA wsaData; 12 int err; 13 14 wVersionRequested = MAKEWORD(2, 2); 15 err = WSAStartup(wVersionRequested,&wsaData); 16 17 if (err != 0) 18 { 19 return false; 20 } 21 if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2) 22 { 23 return false; 24 WSACleanup(); 25 } 26 27 //*************創建套接字*************** 28 SOCKET sockSrv = socket(AF_INET,SOCK_DGRAM,0); 29 30 //*************綁定到地址結構上*************** 31 SOCKADDR_IN addrSrv; 32 addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY); 33 addrSrv.sin_family = AF_INET; 34 addrSrv.sin_port = htons(6000); 35 36 bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(addrSrv)); 37 38 //*************接收******************** 39 SOCKADDR_IN addrClient; 40 int len = sizeof(SOCKADDR); 41 char recvBuf[100]; 42 recvfrom(sockSrv, recvBuf,100,0,(SOCKADDR*)&addrClient,&len); 43 printf("%s\n", recvBuf); 44 45 //*************關閉套接字*************** 46 closesocket(sockSrv); 47 WSACleanup(); 48 49 system("pause"); 50 return 0; 51 }
UDP客戶端代碼:

1 // udpClient.cpp: 定義控制台應用程序的入口點。 2 // 3 4 #include "stdafx.h" 5 #include<WinSock2.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); 16 err = WSAStartup(wVersionRequested, &wsaData); 17 18 if (err != 0) 19 { 20 return false; 21 } 22 if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2) 23 { 24 return false; 25 WSACleanup(); 26 } 27 //****************創建套接字*********************** 28 SOCKET sockClient = socket(AF_INET,SOCK_DGRAM,0); 29 30 //****************發送數據*********************** 31 SOCKADDR_IN addrSrv; 32 addrSrv.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); 33 addrSrv.sin_family = AF_INET; 34 addrSrv.sin_port = htons(6000); 35 int len = sizeof(SOCKADDR); 36 37 sendto(sockClient,"hello",sizeof("hello")+1,0,(SOCKADDR*)&addrSrv,len); 38 39 //****************關閉套接字*********************** 40 closesocket(sockClient); 41 WSACleanup(); 42 43 system("pause"); 44 return 0; 45 }