下面是Server代码: #include <winsock2.h> #include <iostream.h> int main() { WORD wVersion; WSADATA wsaData; wVersion=MAKEWORD(1,1); WSAStartup(wVersion,&wsaData); SOCKADDR_IN addrCli; addrCli.sin_addr.S_un.S_addr=inet_addr("127.0.0.1"); addrCli.sin_family=AF_INET; addrCli.sin_port=htons(5000); SOCKADDR_IN addrSer; addrSer.sin_addr.S_un.S_addr=htonl(INADDR_ANY); addrSer.sin_family=AF_INET; addrSer.sin_port=htons(6000); SOCKET server=socket(AF_INET,SOCK_STREAM,0); bind(server,(SOCKADDR*)&addrSer,sizeof(addrSer)); connect(server,(SOCKADDR*)&addrCli,sizeof(addrCli)); char buf[20]="hello client!"; send(server,buf,strlen(buf)+1,0); recv(server,buf,sizeof(buf),0); cout<<buf<<endl; closesocket(server); WSACleanup(); return 0; } 下面是Client代码: #include <winsock2.h> #include <iostream.h> int main() { WORD wVersion; WSADATA wsaData; wVersion=MAKEWORD(1,1); WSAStartup(wVersion,&wsaData); SOCKADDR_IN addrCli; addrCli.sin_addr.S_un.S_addr=htonl(INADDR_ANY); addrCli.sin_family=AF_INET; addrCli.sin_port=htons(5000); SOCKET Client=socket(AF_INET,SOCK_STREAM,0); bind(Client,(SOCKADDR*)&addrCli,sizeof(addrCli)); listen(Client,SOMAXCONN); SOCKADDR_IN addrSer; int len=sizeof(SOCKADDR); while(1) { SOCKET conn=accept(Client,(SOCKADDR*)&addrSer,&len); cout<<inet_ntoa(addrSer.sin_addr)<<":"<<ntohs(addrSer.sin_port)<<" connected in"<<endl; //htons() 将16位高地位互换 原:0x1234(网络字节) 后:0x3412(X86 字节) ntohs() htonl() ntohl() char buf[20]; recv(conn,buf,sizeof(buf),0); cout<<buf<<endl; sprintf(buf,"hello server!"); send(conn,buf,strlen(buf)+1,0); closesocket(conn); } WSACleanup(); return 0; }