zoukankan      html  css  js  c++  java
  • UDP HelloWord

    Client.cpp

    #include <stdio.h>
    #include <winsock2.h>
    #pragma comment (lib,"ws2_32")

    //注释的为UDP的代码,方便对比
    //流程
    //TCP:WSAStarup socket connect recv/send closesocket WSACleanup
    int main(int argc,char* argv[])
    {
         WSADATA wsaData;
         WSAStartup(MAKEWORD(2,2),&wsaData);

         //SOCKET s = socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);
         SOCKET s = socket(PF_INET,SOCK_DGRAM,IPPROTO_UDP);
        
         sockaddr_in addr;
         addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
         addr.sin_family = PF_INET;
         addr.sin_port = htons(827);

         //connect(s,(SOCKADDR*)&addr,sizeof(SOCKADDR));
         sendto(s,"hello world server UDP",strlen("hello world server UDP") + sizeof(char),
                        0,(SOCKADDR*)&addr,sizeof(SOCKADDR));

         sockaddr_in clientAddrUDP;
        char szBuffer[MAXBYTE] = {0};
         int len = sizeof(SOCKADDR);

         //recv(s,szBuffer,MAXBYTE,NULL);
         recvfrom(s,szBuffer,MAXBYTE,0,(SOCKADDR*)&clientAddrUDP,&len);

         printf("szBuffer = %s ",szBuffer);

         closesocket(s);

         WSACleanup();

         return 0;
    }

    Server.cpp


    //注释的为UDP的代码,方便对比
    //TCP::WSAStartup socket bind listen accept send/recv closesocket WSACleanup
    #include <winsock2.h>
    #include <stdio.h>
    #pragma comment (lib,"ws2_32")

    int main(int argc , char* grgv[])
    {
         WSADATA wsaData;
         WSAStartup(MAKEWORD(2,2),&wsaData);

         //SOCKET s = socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);
         SOCKET s = socket(PF_INET,SOCK_DGRAM,IPPROTO_UDP);

         sockaddr_in addr;
         addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
         addr.sin_port = htons(827);
         addr.sin_family = PF_INET;

         bind(s,(SOCKADDR*)&addr,sizeof(SOCKADDR));

         //listen(s,1);

         SOCKADDR clientAddr;
         int nSize = sizeof(SOCKADDR);
         //SOCKET clientSock;
         char buf[MAXBYTE] = {0};
         int len = sizeof(SOCKADDR);
         recvfrom(s,buf,MAXBYTE,0,(SOCKADDR*)&clientAddr,&len);
         printf("%s ",buf);

         //clientSock = accept(s,(SOCKADDR*)&clientAddr,&nSize);
         //send(clientSock,"hello client ",strlen("hello client " + sizeof(char)),NULL);

         sendto(s,"hello world client UDP",strlen("hello world client UDP") + sizeof(char),
              0,(SOCKADDR*)&clientAddr,sizeof(SOCKADDR));
        
         //closesocket(clientSock);
         closesocket(s);

         WSACleanup();
         return 0;
    }
  • 相关阅读:
    Stuts2的"struts.devMode"设置成true后,不起作用,仍需要重启tomcat
    Javascript和Java获取各种form表单信息的简单实例
    cascade 介绍与用法 ( oracle)
    Struts2拦截器的使用 (详解)
    关于ActionContext.getContext()的用法心得
    mySQL中如何给某一IP段的用户授权?
    【BZOJ4260】Codechef REBXOR (Trie树)
    【BZOJ4500】矩阵(差分约束)
    【BZOJ2054】疯狂的馒头(并查集,线段树)
    【BZOJ1005】[HNOI2008]明明的烦恼(prufer序列)
  • 原文地址:https://www.cnblogs.com/mynona/p/3162643.html
Copyright © 2011-2022 走看看