76net±ØÓ®¹ÙÍøÊÖ»ú°æ

    ¹¤ÒµÂ·ÓÉÆ÷

    TCPºÍUDPµÄÇø±ðºÍÓÅȱµã

    ·¢²¼Ê±¼ä£º2020-07-21ä¯ÀÀ£º1930

    Ò»¡¢TCPÓëUDPÇø±ð×ܽ᣺


    1¡¢TCPÃæÏòÁ¬½Ó£¨Èç´òµç»°ÒªÏȲ¦ºÅ½¨Á¢Á¬½Ó£©;UDPÊÇÎÞÁ¬½ÓµÄ£¬¼´·¢ËÍÊý¾Ý֮ǰ²»ÐèÒª½¨Á¢Á¬½Ó


    2¡¢TCPÌṩ¿É¿¿µÄ·þÎñ¡£Ò²¾ÍÊÇ˵£¬Í¨¹ýTCPÁ¬½Ó´«Ë͵ÄÊý¾Ý£¬ÎÞ²î´í£¬²»¶ªÊ§£¬²»Öظ´£¬ÇÒ°´Ðòµ½´ï;UDP¾¡×î´óŬÁ¦½»¸¶£¬¼´²»±£Ö¤¿É¿¿½»¸¶


    Tcpͨ¹ýУÑéºÍ£¬ÖØ´«¿ØÖÆ£¬ÐòºÅ±êʶ£¬»¬¶¯´°¿Ú¡¢È·ÈÏÓ¦´ðʵÏÖ¿É¿¿´«Êä¡£È綪°üʱµÄÖØ·¢¿ØÖÆ£¬»¹¿ÉÒÔ¶Ô´ÎÐòÂÒµôµÄ·Ö°ü½øÐÐ˳Ðò¿ØÖÆ¡£


    3¡¢UDP¾ßÓнϺõÄʵʱÐÔ£¬¹¤×÷ЧÂʱÈTCP¸ß£¬ÊÊÓÃÓÚ¶Ô¸ßËÙ´«ÊäºÍʵʱÐÔÓнϸߵÄͨÐÅ»ò¹ã²¥Í¨ÐÅ¡£


    4.ÿһÌõTCPÁ¬½ÓÖ»ÄÜÊǵ㵽µãµÄ;UDPÖ§³ÖÒ»¶ÔÒ»£¬Ò»¶Ô¶à£¬¶à¶ÔÒ»ºÍ¶à¶Ô¶àµÄ½»»¥Í¨ÐÅ


    5¡¢TCP¶Ôϵͳ×ÊÔ´ÒªÇó½Ï¶à£¬UDP¶Ôϵͳ×ÊÔ´ÒªÇó½ÏÉÙ¡£



    ¶þ¡¢ÎªÊ²Ã´UDPÓÐʱ±ÈTCP¸üÓÐÓÅÊÆ?


    UDPÒÔÆä¼òµ¥¡¢´«Êä¿ìµÄÓÅÊÆ£¬ÔÚÔ½À´Ô½¶à³¡¾°ÏÂÈ¡´úÁËTCP,ÈçʵʱÓÎÏ·¡£


    £¨1£©ÍøËÙµÄÌáÉý¸øUDPµÄÎȶ¨ÐÔÌṩ¿É¿¿ÍøÂç±£ÕÏ£¬¶ª°üÂʺܵÍ£¬Èç¹ûʹÓÃÓ¦ÓòãÖØ´«£¬Äܹ»È·±£´«ÊäµÄ¿É¿¿ÐÔ¡£


    £¨2£©TCPΪÁËʵÏÖÍøÂçͨÐŵĿɿ¿ÐÔ£¬Ê¹ÓÃÁ˸´ÔÓµÄÓµÈû¿ØÖÆËã·¨£¬½¨Á¢ÁË·±ËöµÄÎÕÊÖ¹ý³Ì£¬ÓÉÓÚTCPÄÚÖõÄϵͳЭÒéÕ»ÖУ¬¼«ÄÑ¶ÔÆä½øÐиĽø¡£


    ²ÉÓÃTCP£¬Ò»µ©·¢Éú¶ª°ü£¬TCP»á½«ºóÐøµÄ°ü»º´æÆðÀ´£¬µÈÇ°ÃæµÄ°üÖØ´«²¢½ÓÊÕµ½ºóÔÙ¼ÌÐø·¢ËÍ£¬ÑÓʱ»áÔ½À´Ô½´ó£¬»ùÓÚUDP¶ÔʵʱÐÔÒªÇó½ÏΪÑϸñµÄÇé¿öÏ£¬²ÉÓÃ×Ô¶¨ÒåÖØ´«»úÖÆ£¬Äܹ»°Ñ¶ª°ü²úÉúµÄÑÓ³Ù½µµ½×îµÍ£¬¾¡Á¿¼õÉÙÍøÂçÎÊÌâ¶ÔÓÎÏ·ÐÔÔì³ÉÓ°Ïì¡£




    Èý¡¢UDPºÍTCP±à³Ì²½ÖèÒ²ÓÐЩ²»Í¬£¬ÈçÏ£º


    TCP: 


    TCP±à³ÌµÄ·þÎñÆ÷¶ËÒ»°ã²½ÖèÊÇ£º 
    ¡¡¡¡1¡¢´´½¨Ò»¸ösocket£¬Óú¯Êýsocket()£»     SOCKET SocketListen =socket(AF_INET,SOCK_STREAM, IPPROTO_TCP);
    ¡¡¡¡2¡¢ÉèÖÃsocketÊôÐÔ£¬Óú¯Êýsetsockopt(); * ¿ÉÑ¡ 
    ¡¡¡¡3¡¢°ó¶¨IPµØÖ·¡¢¶Ë¿ÚµÈÐÅÏ¢µ½socketÉÏ£¬Óú¯Êýbind(); SOCKET_ERROR = bind(SocketListen,(const sockaddr*)&addr,sizeof(addr))
    ¡¡¡¡4¡¢¿ªÆô¼àÌý£¬Óú¯Êýlisten()£»                 SOCKET_ERROR == listen(SocketListen,2)
    ¡¡¡¡5¡¢½ÓÊÕ¿Í»§¶ËÉÏÀ´µÄÁ¬½Ó£¬Óú¯Êýaccept()£»    SOCKET SocketWaiter = accept(SocketListen,


                                                      _Out_    struct sockaddr *addr


     _Inout_  int *addrlen);
    ¡¡¡¡6¡¢ÊÕ·¢Êý¾Ý£¬Óú¯Êýsend()ºÍrecv()£¬»òÕßread()ºÍwrite(); 
    ¡¡¡¡7¡¢¹Ø±ÕÍøÂçÁ¬½Ó£» closesocket(SocketListen);closesocket(SocketWaiter);
    ¡¡¡¡8¡¢¹Ø±Õ¼àÌý£» 

    SOCK_STREAMÕâÖÖµÄÌØµãÊÇÃæÏòÁ¬½ÓµÄ£¬¼´Ã¿´ÎÊÕ·¢Êý¾Ý֮ǰ±ØÐëͨ¹ýconnect½¨Á¢Á¬½Ó£¬¶øSOCK_DGRAMÕâÖÖÊÇUser Datagram ProtocolЭÒéµÄÍøÂçͨѶ£¬ËüÊÇÎÞÁ¬½ÓµÄ£¬²»¿É¿¿µÄ¡£


    TCP±à³ÌµÄ¿Í»§¶ËÒ»°ã²½ÖèÊÇ£º 


    ¡¡¡¡1¡¢´´½¨Ò»¸ösocket£¬Óú¯Êýsocket()£» 
    ¡¡¡¡2¡¢ÉèÖÃsocketÊôÐÔ£¬Óú¯Êýsetsockopt();* ¿ÉÑ¡ 
    ¡¡¡¡3¡¢°ó¶¨IPµØÖ·¡¢¶Ë¿ÚµÈÐÅÏ¢µ½socketÉÏ£¬Óú¯Êýbind();* ¿ÉÑ¡ 
    ¡¡¡¡4¡¢ÉèÖÃÒªÁ¬½ÓµÄ¶Ô·½µÄIPµØÖ·ºÍ¶Ë¿ÚµÈÊôÐÔ£» 
    ¡¡¡¡5¡¢Á¬½Ó·þÎñÆ÷£¬Óú¯Êýconnect()£» 
    ¡¡¡¡6¡¢ÊÕ·¢Êý¾Ý£¬Óú¯Êýsend()ºÍrecv()£¬»òÕßread()ºÍwrite(); 
    ¡¡¡¡7¡¢¹Ø±ÕÍøÂçÁ¬½Ó£»


    int send(
      _In_  SOCKET s,         //ÏòÄĸösocket·¢ËÍ£¬accept·µ»ØµÄsocket¡£
      _In_  const char *buf,
      _In_  int len,
      _In_  int flags
    );                               ÓÉÓÚ
    send(SocketClient,(const char *)&fh,sizeof(fh),0);

    recv(SocketClient,szbuf,sizeof(szbuf),0);



    UDP:


    ÓëÖ®¶ÔÓ¦µÄUDP±à³Ì²½ÖèÒª¼òµ¥Ðí¶à£¬·Ö±ðÈçÏ£º 
    ¡¡¡¡UDP±à³ÌµÄ·þÎñÆ÷¶ËÒ»°ã²½ÖèÊÇ£º 
    ¡¡¡¡1¡¢´´½¨Ò»¸ösocket£¬Óú¯Êýsocket()£» 
    ¡¡¡¡2¡¢ÉèÖÃsocketÊôÐÔ£¬Óú¯Êýsetsockopt();* ¿ÉÑ¡ 
    ¡¡¡¡3¡¢°ó¶¨IPµØÖ·¡¢¶Ë¿ÚµÈÐÅÏ¢µ½socketÉÏ£¬Óú¯Êýbind(); 
    ¡¡¡¡4¡¢Ñ­»·½ÓÊÕÊý¾Ý£¬Óú¯Êýrecvfrom(); 
    ¡¡¡¡5¡¢¹Ø±ÕÍøÂçÁ¬½Ó£» 


    UDP±à³ÌµÄ¿Í»§¶ËÒ»°ã²½ÖèÊÇ£º 
    ¡¡¡¡1¡¢´´½¨Ò»¸ösocket£¬Óú¯Êýsocket()£» 
    ¡¡¡¡2¡¢ÉèÖÃsocketÊôÐÔ£¬Óú¯Êýsetsockopt();* ¿ÉÑ¡ 
    ¡¡¡¡3¡¢°ó¶¨IPµØÖ·¡¢¶Ë¿ÚµÈÐÅÏ¢µ½socketÉÏ£¬Óú¯Êýbind();* ¿ÉÑ¡ 
    ¡¡¡¡4¡¢ÉèÖöԷ½µÄIPµØÖ·ºÍ¶Ë¿ÚµÈÊôÐÔ; 
    ¡¡¡¡5¡¢·¢ËÍÊý¾Ý£¬Óú¯Êýsendto(); 
    ¡¡¡¡6¡¢¹Ø±ÕÍøÂçÁ¬½Ó£»




    int recvfrom(
      _In_         SOCKET s,       //°ó¶¨µÄsocket
      _Out_        char *buf,
      _In_         int len,
      _In_         int flags,
      _Out_        struct sockaddr *from,  //ÓÃÀ´½ÓÊÕ¶Ô·½µÄ
      _Inout_opt_  int *fromlen
    );
    int nres=recvfrom(pThis->m_socketListen,szBuf,sizeof(szBuf),0,(sockaddr*)&addrClient,&nSize);//0´¦±ê־λ
    sendto(m_socketListen,szBuffer,nSize,0,(const sockaddr*)&addr,sizeof(sockaddr_in))
    TCPºÍUDPÊÇOSIÄ£ÐÍÖеÄÔËÊä²ãÖеÄЭÒé¡£TCPÌṩ¿É¿¿µÄͨÐÅ´«Ê䣬¶øUDPÔò³£±»ÓÃÓÚÈù㲥ºÍϸ½Ú¿ØÖƽ»¸øÓ¦ÓõÄͨÐÅ´«Êä¡£


    4¡¢½«socketÉèÖÃΪ¹ã²¥ÊôÐÔ
    bool optval=true;
    setsockopt(m_socketListen,SOL_SOCKET,SO_BROADCAST,(const char *)&optval,sizeof(bool));


    5¡¢½«SocketÉèÖÃΪ·Ç×èÈû¡£
    //bool benable=true;
    //ioctlsocket(m_socketListen,FIONBIO,(u_long*)&benable);


    6¡¢TcpÍ·£¬20×Ö½Ú


    211656003971.png

    7¡¢UDPÊײ¿,8¸ö×Ö½Ú

    211656229818.png


    ÉÏһƪ£ºÒ»Îĸ㶮TCPÓëUDPÓÐÊ²Ã´Çø±ð ÏÂһƪ£ºÊ²Ã´ÊÇLoRaЭÒ飿
    Ãâ·ÑÑù»úÉêÇë Ñù»úÃâ·ÑÊÔÓã¬Ìáǰ¹µÍ¨È·±£76net±ØÓ®¹ÙÍøÊÖ»ú°æ²úÆ·Éî¶ÈÆõºÏ¹ó˾ҵÎñÐèÇó
    • *ÄúµÄÐÕÃû£º
    • *ÊÖ»úºÅÂ룺
    • *¹«Ë¾Ãû³Æ£º
    • ÄúµÄְλ£º
    • ÄúµÄÓÊÏ䣺
    • ÄúµÄQQ£º
    Ïà¹Ø²úÆ·
    ²úÆ·°Ù¿Æ
    Òþ˽Õþ²ßÍøÕ¾µØÍ¼ Copyright ? 2015-2022 ÏÃÃÅ76net±ØÓ®¹ÙÍøÊÖ»ú°æÍ¨ÐſƼ¼ÓÐÏÞ¹«Ë¾ All Rights Reserved. ¡¡ ÃöICP±¸15018514ºÅ
    ÔÚÏß×Éѯ ²¦´òµç»°
    sitemap¡¢ÍøÕ¾µØÍ¼