仅在VC 6.0上通过
服务器端先运行,客户端向服务器端说”1 1 1 1 1 ”,服务器端每位加1后向客户端说”2 2 2 2 2”,双方循环一定次数后通信结束。
TCP服务器端程序:TCPSev.cpp
#include "stdio.h" #include#include #pragma comment(lib,"ws2_32.lib") void intToChar(int &n,char *pBuf); void main() { //加载套接字库 WORD wVerRequested; WSADATA wsaData; int err; wVerRequested = MAKEWORd(1,1); err = WSAStartup(wVerRequested,&wsaData); if (err != 0) { return ; } if (LOBYTE(wsaData.wVersion) != 1 || HIBYTE(wsaData.wVersion) != 1) { WSACleanup(); return ; } //创建用于监听的套接字 SOCKET sockSev = socket(AF_INET,SOCK_STREAM,0); //绑定地址信息 SOCKADDR_IN addSrv; addSrv.sin_family = AF_INET; addSrv.sin_port = htons(6000); addSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY); //绑定套接字到制定地址与端口 bind(sockSev,(SOCKADDR*)&addSrv,sizeof(SOCKADDR)); //将套接字设置为监听状态 listen(sockSev,5); //监听 SOCKADDR_IN addClient;//客户地址信息 int len = sizeof(SOCKADDR); int digit = 0; while(1) { char sBuf[100]; SOCKET sockConnect = accept(sockSev,(SOCKADDR*)&addClient,&len); if (sockConnect == -1) { printf("错误:客户端无效!n"); continue; } while(1) {//有客户链接请求被成功接收 //多次同一ip接收数据 int n = recv(sockConnect,sBuf,100,0); if(n > 0) { printf("%snn",sBuf); //转换数据 digit += 2; intToChar(digit,sBuf); n = send(sockConnect,sBuf,strlen(sBuf)+1,0); if(n <= 0) { printf("Send error!"); closesocket(sockConnect); break; } } else if(n < 0) { printf("Receive error!"); closesocket(sockConnect); printf("%sn","arg q"); WSACleanup(); break; } } //关闭套接字 closesocket(sockConnect); digit = 0; } closesocket(sockSev); WSACleanup(); return; } void intToChar(int &n,char *pBuf) { *pBuf = NULL;//注意清空 char cTemp[] = {'0'}; itoa(n,cTemp,10); for(int m = 0;m < 5;m++) { strcat(pBuf,cTemp); strcat(pBuf," "); } }
TCP客户端程序:TCPClient.cpp
#include "stdio.h" #include "stdlib.h" #include#pragma comment(lib,"ws2_32.lib") void intToChar(int n,char *pBuf); void main() { //加载套接字库 WORD wVerRequested; WSADATA wsaData; int err; wVerRequested = MAKEWORd(1,1); err = WSAStartup(wVerRequested,&wsaData); if (err != 0) { return ; } if (LOBYTE(wsaData.wVersion) != 1 || HIBYTE(wsaData.wVersion) != 1) { WSACleanup(); return ; } //创建用于监听的套接字 SOCKET sockClient = socket(AF_INET,SOCK_STREAM,0); SOCKADDR_IN addSrv; addSrv.sin_family = AF_INET; addSrv.sin_port = htons(6000); addSrv.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); char sBuf[100] = "1 1 1 1 1"; int digit = 1; //绑定套接字到制定地址与端口 int res = connect(sockClient,(SOCKADDR*)&addSrv,sizeof(SOCKADDR)); for(int n = 0;n < 10;n++) { send(sockClient,sBuf,strlen(sBuf)+1,0); while(1) { //接收数据 int rSize = recv(sockClient,sBuf,100,0); printf("%snn",sBuf); //转换数据 digit += 2; intToChar(digit,sBuf); break; } } closesocket(sockClient); WSACleanup(); digit= 1; return; } void intToChar(int n,char *pBuf) { *pBuf = NULL; char cTemp[] = {'0'}; itoa(n,cTemp,10);//注意itoa()函数的用法 for(int m = 0;m < 5;m++) { strcat(pBuf,cTemp); strcat(pBuf," "); } }
UDP服务器端程序:UDPSev.cpp
#include "stdio.h" #include#include #pragma comment(lib,"ws2_32.lib") void intToChar(int &n,char *pBuf); void main() { //加载套接字库 WORD wVerRequested; WSADATA wsaData; int err; wVerRequested = MAKEWORd(1,1); err = WSAStartup(wVerRequested,&wsaData); if (err != 0) { return ; } if (LOBYTE(wsaData.wVersion) != 1 || HIBYTE(wsaData.wVersion) != 1) { WSACleanup(); return ; } //创建用于监听的套接字 SOCKET sockSev = socket(AF_INET,SOCK_DGRAM,0); //绑定地址信息 SOCKADDR_IN addSrv; addSrv.sin_family = AF_INET; addSrv.sin_port = htons(6000); addSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY); //绑定套接字到制定地址与端口 bind(sockSev,(SOCKADDR*)&addSrv,sizeof(SOCKADDR)); SOCKADDR_IN addClient;//客户地址信息 int len = sizeof(SOCKADDR); int digit = 0; char sBuf[100] = {0}; char rBuf[100] = {0}; while(1) { recvfrom(sockSev,rBuf,100,0,(SOCKADDR*)&addClient,&len); digit += 2; printf("%snn",rBuf); intToChar(digit,sBuf); sendto(sockSev,sBuf,strlen(sBuf)+1,0,(SOCKADDR*)&addClient,len); } closesocket(sockSev); WSACleanup(); digit = 0; return; } void intToChar(int &n,char *pBuf) { *pBuf = NULL;//注意清空 char cTemp[] = {'0'}; itoa(n,cTemp,10); for(int m = 0;m < 5;m++) { strcat(pBuf,cTemp); strcat(pBuf," "); } }
UDP客户端程序:UDPClient.cpp
#include "stdio.h" #include "stdlib.h" #include#pragma comment(lib,"ws2_32.lib") void intToChar(int n,char *pBuf); void main() { //加载套接字库 WORD wVerRequested; WSADATA wsaData; int err; wVerRequested = MAKEWORd(1,1); err = WSAStartup(wVerRequested,&wsaData); if (err != 0) { return ; } if (LOBYTE(wsaData.wVersion) != 1 || HIBYTE(wsaData.wVersion) != 1) { WSACleanup(); return ; } //创建用于监听的套接字 SOCKET sockClient = socket(AF_INET,SOCK_DGRAM,0); SOCKADDR_IN addSrv; addSrv.sin_family = AF_INET; addSrv.sin_port = htons(6000); //addSrv.sin_addr.S_un.S_addr = inet_addr("218.199.180.5"); //对方服务器IP addSrv.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); char sBuf[100] = "1 1 1 1 1"; char rBuf[100] ; char tBuf[] = "1 1 1 1 1"; int len = sizeof(SOCKADDR); int digit = 1; int n = 100; while(n>0) { sendto(sockClient,sBuf,strlen(sBuf)+1,0,(SOCKADDR*)&addSrv,len); recvfrom(sockClient,rBuf,100,0,(SOCKADDR*)&addSrv,&len); printf("%snn",rBuf); digit += 2; intToChar(digit,sBuf); n--; } closesocket(sockClient); WSACleanup(); strcat(sBuf,tBuf); digit= 1; return; } void intToChar(int n,char *pBuf) { *pBuf = NULL; char cTemp[] = {'0'}; itoa(n,cTemp,10);//注意itoa()函数的用法 for(int m = 0;m < 5;m++) { strcat(pBuf,cTemp); strcat(pBuf," "); } }



