upd通信代码-windows版

1.服务端代码:

[cpp] view plain copy print ?
  1. #include <WinSock2.h>   
  2. #include <iostream>   
  3. #pragma comment(lib,"ws2_32.lib")   
  4. using namespace std;  
  5.   
  6. void main(){  
  7.   
  8.     //初始化SOCKET   
  9.     WORD wVersionRequested;  
  10.     WSADATA wsaData;  
  11.     int err;  
  12.   
  13.     wVersionRequested = MAKEWORD(1,1);  
  14.   
  15.     err = WSAStartup( wVersionRequested, &wsaData);  
  16.     if(err!=0){  
  17.         return;  
  18.     }  
  19.   
  20.     if(LOBYTE(wsaData.wVersion)!=1 || HIBYTE(wsaData.wVersion)!=1){  
  21.         WSACleanup();  
  22.         return;  
  23.     }  
  24.   
  25.     //设置SOCKET   
  26.     SOCKET server = socket(AF_INET,SOCK_DGRAM,0);  
  27.     SOCKADDR_IN addr;  
  28.     addr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);  
  29.     addr.sin_family = AF_INET;  
  30.     addr.sin_port = htons(6000);  
  31.     //绑定服务器   
  32.     bind(server,(SOCKADDR*)&addr, sizeof(SOCKADDR));  
  33.   
  34.     char recvBuf[1024],sendBuf[1024],tempBuf[1024];  
  35.   
  36.     SOCKADDR_IN addrClient;  
  37.     INT len = sizeof(SOCKADDR);  
  38.   
  39.     sendto(server,"连接成功,请键入聊天消息",strlen("连接成功,请键入聊天消息")+1,0,(SOCKADDR*)&addrClient,len);  
  40.   
  41.     while(1){  
  42.   
  43.         //读取数据   
  44.         recvfrom(server,recvBuf,1000,0,(SOCKADDR*)&addrClient,&len);  
  45.   
  46.         cout<<recvBuf<<endl;  
  47.   
  48.         cout<<"夜末: ";  
  49.         cin>>sendBuf;  
  50.         sprintf(tempBuf,"夜末: %s",sendBuf);  
  51.         sendto(server,tempBuf,strlen(tempBuf)+1,0,(SOCKADDR*)&addrClient,len);  
  52.   
  53.     }  
  54.     closesocket(server);  
  55.     WSACleanup();  
  56. }  

2.客户端代码

[cpp] view plain copy print ?
  1. #include <WinSock2.h>   
  2. #include <iostream>   
  3. #pragma comment(lib,"ws2_32.lib")   
  4. using namespace std;  
  5.   
  6. void main(){  
  7.   
  8.     char ip[20],name[100];  
  9.   
  10.     cout<<"请输入服务器端IP地址:";  
  11.     cin>>ip;  
  12.   
  13.     cout<<"请输入名的昵称:";  
  14.     cin>>name;  
  15.   
  16.     WORD wVersionRequested;  
  17.     WSADATA wsaData;  
  18.     int err;  
  19.   
  20.     wVersionRequested = MAKEWORD(1,1);  
  21.   
  22.     err = WSAStartup( wVersionRequested, &wsaData);  
  23.     if(err!=0){  
  24.         return;  
  25.     }  
  26.   
  27.     if(LOBYTE(wsaData.wVersion)!=1 || HIBYTE(wsaData.wVersion)!=1){  
  28.         WSACleanup();  
  29.         return;  
  30.     }  
  31.   
  32.     SOCKET client = socket(AF_INET,SOCK_DGRAM,0);  
  33.     SOCKADDR_IN addr;  
  34.     addr.sin_addr.S_un.S_addr = inet_addr(ip);  
  35.     addr.sin_family = AF_INET;  
  36.     addr.sin_port = htons(6000);  
  37.   
  38.     char recvBuf[1024],sendBuf[1024],tempBuf[1024],nameBuf[1024];  
  39.     int len = sizeof(SOCKADDR);  
  40.   
  41.   
  42.     while(1){  
  43.   
  44.         sprintf(nameBuf,"%s: ",name);  
  45.         cout<<nameBuf;  
  46.   
  47.         //发送   
  48.         cin>>sendBuf;  
  49.         sprintf(tempBuf,"%s: %s",name,sendBuf);  
  50.         sendto(client,tempBuf,strlen(tempBuf)+1,0,(SOCKADDR*)&addr,len);  
  51.   
  52.         //读取   
  53.         recvfrom(client,recvBuf,1000,0,(SOCKADDR*)&addr,&len);  
  54.         cout<<recvBuf<<endl;  
  55.   
  56.     }  
  57. }  

你可能感兴趣的:(upd通信代码-windows版)