zoukankan      html  css  js  c++  java
  • 网络套接字编程介绍---UDP通信

    知识内容:

      1.UDP通信编程流程

      2.套接字接口介绍

    一、UDP通信编程

      1.创建套接字
      >>在内核中创建一个socket结构体,返回一个文件描述符作为操作句柄,用于使进程与网卡之间建立联系
      2.为套接字绑定地址信息
      >>在内核的socket结构体中添加描述信息(地址信息),告诉操作系统自己使用了哪个地址和端口,操作系统收到发往这个地址和端口的数据之后,则放入这个socket的接收缓冲区中(将这个对应的数据交给这个进程去做)
      3.发送数据信息
      >>将数据拷贝到内核中的socket发送缓冲区中(操作系统会取出数据进行层层协议封装,将其发送出去)
      4.接收数据
      >>进程通过操作句柄从内核的socket接收缓冲区中取出已经接收到的数据(操作系统已经完成了传输层以下的数据分用)
      5.关闭套接字
      >>关闭套接字,释放调用的资源

    二、套接字接口介绍

      1.创建套接字
      int socket (int domain, int type, int protocol);
        demain:地址域,即不同的网络地址结构---AF_INET:IPv4地址域
        type:套接字类型< 流式套接字 / 数据报套接字 >
          流式套接字:有序的,可靠的,双向的,基于连接的字节流传输---SOCK_STREAM
          数据报套接字:无连接,不可靠,有最大长度限制的传输---SOCK_DGRAM
        protocol:使用的协议,0---不同套接字类型下的默认协议,
          流式套接字---tcp---IPPOTO_TCP
          数据报套接字---udp---IPPOTO_UDP
        返回值:返回套接字的操作句柄,即文件描述符

      2.为套接字绑定地址信息
      int bind (int sockfd, strcut sockaddr* addr, socklen_t len);
        sockfd:创建套接字时返回的操作句柄(文件描述符)
        *addr:要绑定的地址结构信息
        len:地址信息的长度
        返回值:成功返回0,失败返回-1

      3.发送数据
      int sendto(int sockfd, char* data, int data_len, int flag, struct sockaddr* dest_addr,

            socklen_t addr_len);
        sockfd:创建套接字时返回的操作句柄(文件描述符)
        data:要发送数据的首地址
        data_len:要发送数据的长度
        flag:选项参数,一般默认选0,表示当前操作为阻塞操作;MSG_DONTWAIT--当前操作为非阻塞操作
            若发生数据时,socket发送缓冲区已经满了,则0默认阻塞等待,MSG_DONTWAIT立即返回报错
        返回值:成功返回实际发送数据的数据字节数,失败返回-1

      4.接收数据
      int revcfrom(int sockfd, char* buf, int len, int flag,
        struct sockaddr* src_addr, socklen_t addr_len);
        sockfd:创建套接字时返回的操作句柄(文件描述符)
        buf:用户态缓冲区的首地址,用于存放接收到的数据,从内核socket,接收缓冲区中取出数据放入 这个buf用户缓冲区中
        len:用户想要读取的数据长度,但是不能大于buf缓冲区的长度
        flag:选项参数,一般默认选0,表示当前操作为阻塞操作;MSG_DONTWAIT--当前操作为非阻塞操作
        src_addr:接收到数据的发送端地址(服务端地址),
        addr_len:输入输出型参数,用于指定想要获取多长的地址信息;获取地址之后,用于返回地址信息 的实际长度
        返回值:成功返回实际接收到数据的数据字节长度,失败返回-1

      5.关闭套接字
      int close (int fd);

  • 相关阅读:
    撒旦撒旦撒
    的释放的是分
    识别真假搜索引擎(搜索蜘蛛)方法(baidu,google,Msn,sogou,soso等)
    [转]Tesseract-OCR (Tesseract的OCR引擎最先由HP实验室于1985年开始研发)
    使用SQLMAP对网站和数据库进行SQL注入攻击
    Kali Linux 安装教程-转
    【教程】如何修改路由表?
    基于comet服务器推送技术(web实时聊天)
    Ghost硬盘对拷
    Web 通信 之 长连接、长轮询(long polling)
  • 原文地址:https://www.cnblogs.com/bj3251101/p/13221930.html
Copyright © 2011-2022 走看看