• UDP通信


    UDP与TCP:

    TCP:传输控制协议,提供面向连接、可靠地数据流服务。客户与服务器进行通信的过程中必须在双方之间建立TCP协议,TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能都在双方之间传送。

    UDP:用户数据包协议,简单的面向数据包的运输层协议。因为没有严格的校验与检查机制,因而能够进行快速的数据传输。

    进行UDP通信的首要步骤:必须加载相应版本的socket。本文中提供两种方式对UDP通信编程。

    MFC:

    在MFC中只需要加载AfxSocketInit()函数加载,头文件<afxSocket.h>

    相关函数:

    socket(int af ,int type,int protocal)

             af:地址描述,目前只支持AF_INET :ARPA Internet格式

             type:socket类型,TCP(SOCK_STREAM)和UDP(SOCK_DGRAM)等

             protocal:套接口所用的协议,0表示无协议,IPPROTO_TCP、IPPTOTO_UDPIPPROTO_SCTP、  IPPROTO_TIPC等,它们分别对应TCP传输协议、UDP传输协议、STCP传输协议、TIPC传输协议。

    SOCKADDR:通用地址结构,统一参与windows套接字通信的计算机上的一个通信的协议。一般使用SOCKADDR_IN数据结构进行操作,由于Microsoft TCP/IP套接字开发人员的工具箱仅支持internet地址字段,而实际填充字段的每一部分则遵循sockaddr_in数据结构,两者大小都是16字节,所以二者之间可以进行切换。

    struct socketaddr_in
    {
        short int sin_family;       //指代协议族,socket编程中只能是AF_INET
        unsigned short int sin_port;  // 存储端口号(使用网络字节顺序)
         struct int_addr sin_addr;      // 存储IP地址,使用in_addr这个数据结构
        unsigned char sin_zero[8]; // 为了让ssocketaddr_in与ocketaddr保持大小相同而保留的空字节
    }
    
    typedef struct in_addr
    {
        union
        {
            //三种存储IP地址的联合体,第一种四个字节表示IP地址的四个数字,第二种
            //用两个双字节来表示IP地址
            //第三种用一个长整形来表示IP地址
            struct{unsigned char s_b1,s_b2,s_b3,s_b4;}S_un_b;
            struct{unsigned short s_w1,s_w2;}S_un_w;
            unsigned long S_addr;
        }S_un;
    }IN_ADDR

    inet_ntoa( struct in_addr in)将一个IP转换成一个互联网标准点分格式的字符串,正确就返回一个存储着点分格式IP地址的静态缓冲区,错误返回NULL;

    int PASCAL FAR bind( SOCKET s/*套接口描述字*/, const struct sockaddr FAR* name/*赋予套接口地址*/,int namelen/*套接口地址长度*/);

    添加线程接受数据

           创建线程数据结构体--->CreateThread()---->添加线程函数(线程函数不能为类的成员函数,可以通过定义为类的静态成员函数)---->RecvForm()函数

     

  • 相关阅读:
    day06-for循环补充,可变与不可变类型,数字,字符串和列表的使用
    day05-while循环和for循环的使用
    day04-运算符,流程控制之if和input()用户交互功能
    day03-变量,基本数据类型,基本运算符
    day02-python和计算机介绍2
    day01-python和计算机介绍1
    仓库
    四则运算
    异常处理
    动手动脑3
  • 原文地址:https://www.cnblogs.com/jackcin/p/3230658.html
Copyright © 2020-2023  润新知