UDP

UDP(User Datagram Protocol)     用户数据报协议
不保障可靠数据的传输,但能够向若干个目标发送数据,接收发自若干个源的数据

服务端

void main(){  
  
    err = WSAStartup(versionRequest, &wsaData);   
 
    if(err != 0 ){  
        printf("ERROR!");  
        return;  
    }  
    //check whether the version is 1.1, if not print the error and cleanup wsa?  
    if (LOBYTE(wsaData.wVersion)  != 1 || HIBYTE(wsaData.wVersion) != 1)  
    {  
        printf("WRONG WINSOCK VERSION!");  
        WSACleanup();  
        return;  
    }  
 
  
    SOCKET socServer = socket(AF_INET, SOCK_DGRAM,0);  
    SOCKADDR_IN addr_Srv;  
    addr_Srv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
    addr_Srv.sin_family = AF_INET;
    addr_Srv.sin_port = htons(HOST_PORT);  
 
    //bind socket to  the host  
    bind(socServer,( SOCKADDR*) &addr_Srv, sizeof(SOCKADDR));  
 
    //address  of a client  
    SOCKADDR_IN addr_Clt;  
    char recvBuf[100];  
 
    int fromlen = sizeof(SOCKADDR);  
    // while() to listen all the time  
    while(true){  
        //receive data function of server  
        recvfrom(socServer, recvBuf, 100, 0,  (SOCKADDR*) &addr_Clt, &fromlen);  
        //output the data received to cmd  
        std::cout<<recvBuf<<std::endl;  
        //send "OK" to the from_client to indicates that data have been received.  
        //send function is used by server, while sendto function is used by client. NOT sure.  
//      send(addr_Clt, OK_STR,  strlen(OK_STR)+1, 0);  
        sendto(socServer, OK_STR, strlen(OK_STR)+1, 0, (SOCKADDR*)&addr_Clt, sizeof(SOCKADDR));  
    }  
      
    // at last close the socket.  
    closesocket(socServer);  
    //cleanup WSAData  
    WSACleanup();} 


客户端

void main()
{
 int length=0;
 SOCKET socket1;
 PointIndex point;
 InitWinsock();
 struct sockaddr_in server;
 int len =sizeof(server);
 server.sin_family=AF_INET;
 server.sin_port=htons(1000); ///server的监听端口
 server.sin_addr.s_addr=inet_addr("192.168.1.102"); ///server的地址
 socket1=socket(AF_INET,SOCK_DGRAM,0);
 while (1)
 {
  point.firstDemension=1;
  point.secondDemension=2;
  point.thirdDemension=3;
  point.forthDemension=4;
  point.value=0;
  strcpy(point.fileName,"test");
  PointIndex *ppoint = &point;
  length=sizeof(PointIndex);
  char *buffer = (char*)(ppoint);
  printf("Send message :  ");
  gets(buffer);
  if (sendto(socket1,buffer,length,0,(struct sockaddr*)&server,len)!=SOCKET_ERROR)
  {
   if (recvfrom(socket1,buffer,length,0,(struct sockaddr*)&server,&len)!=SOCKET_ERROR)
    printf("Recieve message :  %s\n",buffer);
  }
 }
 closesocket(socket1);
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值