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;
    }
  • 相关阅读:
    对于大于8046 bytes的行,RCSI/SI事务隔离级别无效
    SQL Server如何在变长列上存储索引
    索引键的唯一性(4/4):非唯一聚集索引上的唯一和非唯一非聚集索引
    探秘重编译(Recompilations)(2/2)
    探秘重编译(Recompilations)(1/2)
    第11/24周 重编译
    索引键的唯一性(3/4):唯一聚集索引上的唯一和非唯一非聚集索引
    索引键的唯一性(2/4):唯一与非唯一聚集索引
    索引键的唯一性(1/4):堆表上的唯一与非唯一非聚集索引的区别
    统计信息内幕:直方图和密度向量
  • 原文地址:https://www.cnblogs.com/mynona/p/3162643.html
Copyright © 2011-2022 走看看