//客户端程序
#include <stdio.h> #pragma comment(lib,"WS2_32.lib") void main() { WSADATA wsd; if(WSAStartup(MAKEWORD(2,2),&wsd)!=0) // 加载套接字库 { printf("start up failed!\n"); return ; } SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0); //创建socket(SOCK_STREAM 流式套接字) SOCKADDR_IN addrSrv; addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1"); //服务器IP地址 addrSrv.sin_family=AF_INET; //创建套接字时,用该字段指定地址家族,对于TCP/IP协议的,必须设置为AF_INET。 addrSrv.sin_port=htons(6000); //端口 connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)); //连接服务器端 char recvBuf[100]; recv(sockClient,recvBuf,100,0); //接收服务器端数据,讲数据保存在recvBuf中 printf("%s\n",recvBuf); send(sockClient,"hello world",strlen("hello world")+1,0); //向服务器端发送数据 closesocket(sockClient); //关闭连接 WSACleanup(); } |
服务器端程序
#include <Winsock2.h> #include <stdio.h> #pragma comment(lib,"WS2_32.lib") void main() { WSADATA wsd; if(WSAStartup(MAKEWORD(2,2),&wsd)!=0) //加载套接字库 { printf("start up failed!\n"); return ; } char sendBuf[100] = "Welcome to ShenZhen University..."; char recvBuf[100]; int len; SOCKET server=socket(AF_INET,SOCK_STREAM,0); //创建socket SOCKADDR_IN addrSrv; addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY); //设置地址 addrSrv.sin_family=AF_INET; addrSrv.sin_port=htons(6000); //设置端口号 bind(server,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)); //绑定 listen(server,5); //设置最多连接数 len=sizeof(SOCKADDR); SOCKADDR_IN addrClient; while(1) { SOCKET client=accept(server,(SOCKADDR*)&addrClient,&len); //接收客户端连接 send(client,sendBuf,strlen(sendBuf)+1,0); //发送信息客户端 recv(client,recvBuf,100,0); //接收客户端数据 printf("%s\n",recvBuf); closesocket(client); } WSACleanup(); } |