• 【windows socket+UDPserverclient】


    Windows Socket+UDPserverclient


         Winsock是 Windows下套接字标准
             
             1.UDP socket编程

             UDP(用户数据报协议)是一个无连接。不可靠的传输数据,其特点是简单,快捷。相比与TCP,UDP不须要建立连接(不需connect、accept函数),数据发送接收之后,不须要终止连接。基于UDP的程序,避免了TCP执行的开销,在效率与速度上具有更好的表现。
             UDP是无连接的,可能会有数据的丢失,延迟。这些须要应用程序自己处理。

             
             2.UDP基本函数
              
    创建socket
             SOCKET  socket (int af, int type, int protocol);
             第一个參数af:  表示族地址。网络编程一般使用AF_INET宏。
             第二个參数type:  表示连接类型,TCP可选面向连接SOCK_STREAM。UDP数据报SOCK_DGRAM。
             第三个參数protocol:  表示协议,在使用AF_INET族地址UDP连接,设为IPPROTO_UDP。
    绑定socket:
             int  bind(SOCKET s, const struct sockaddr *saddr,int namelen);
             第一个參数:  须要绑定的socket。
             第二个參数:  相应AF_INET,使用struct sockaddr_in包括协议。IP,port等信息。

             第三个參数:  相应AF_INET,使用struct sockaddr_in结构大小。
             该函数将socket与协议,IP地址。Portport号绑定起来。相对于给socket“命名”唯一的标识。这样其它的进程就能够通过这个标识找到这个socket。

    发送数据
             int  sendto(SOCKET s, const char  *buf,  int len,
                                  int flags, const struct sockaddr  *to, int tolen);
             第一个參数:  socket为对方的socket。
             第二个參数:  发送数据的缓冲区。
             第三个參数:  数据缓冲区大小。
             第四个參数:  紧急状态,一般这为0。

             第五个參数:  可选。相应AF_INET,对方IP。port等socket地址标识sockaddr_in。
             第六个參数:  可选,相应AF_INET,使用sockaddr_in结构大小。
             该函数用于UDP发送数据。
    接收数据
             int  recvfrom(SOCKET s, char *buf, int len, 
                                      int flags, struct sockaddr *from, int *fromlen );         
             第一个參数:  socket为对方的socket。
             第二个參数:  接收数据的缓冲区。
             第三个參数:  数据缓冲区大小。
             第四个參数:  紧急状态。一般这为0。
             第五个參数:  可选。相应AF_INET。返回对方IP。port等socket地址标识sockaddr_in。

             第六个參数:  可选,相应AF_INET,使用sockaddr_in结构大小。
             该函数用于UDP接收数据。
    绑定socket
             int  bind(SOCKET s, const struct sockaddr *saddr,int namelen);
             第一个參数:  须要绑定的socket。
             第二个參数:  相应AF_INET,使用struct sockaddr_in包括协议,IP,port等信息。

             第三个參数:  相应AF_INET。使用struct sockaddr_in结构大小。
             该函数将socket与协议,IP,port号绑定起来,相对于给socket“命名”唯一的标识。这样其它的进程就能够通过这个标识找到这个socket。
    关闭套接字
              int  closesocket(SOCKET s);
              參数为socket。
              该函数用于关闭套接字。

              
              3.牛刀小试
              先在VC6.0执行server程序,再打开一个VC6.0执行client程序:
              UDPseverserver等待来自client的信息。收到信息后打印出来,然后向client发送如今的时间。
              UDPclient客户端向server发送一个“Hello,server!”信息,然后接收来自server的时间信息并打印,反复三次。

    执行效果:

    UDPclient程序:
    UDPserver程序:


  • 相关阅读:
    【转载】ARM与单片机的区别
    关于头文件定义的一点思考
    关于*** WARNING L15: MULTIPLE CALL TO SEGMENT
    【转】单片机中volatile定义的作用详解
    关于单片机位数的思考(8位、16位、32位)
    memcpy函数
    ubuntu下打开windows里的txt文件乱码解决
    linux source filename
    linux环境设置export
    pdf转word工具
  • 原文地址:https://www.cnblogs.com/brucemengbm/p/7225920.html
Copyright © 2020-2023  润新知