• 【2】创建套接字与基本函数


    创建socket

    int socket(int af, int type, int protocol);  // linux
    SOCKET socket(int af, int type, int prococol); // windows

    af/pf : 地址族 address family, IP地址类型

    type : 数据传输方式/套接字类型

    protocal : 传输协议 tcp/udp

    bin()函数

    int bind(int sock, struct sockaddr *addr, socklen_t addrlen);  //Linux
    int bind(SOCKET sock, const struct sockaddr *addr, int addrlen);  //Windows
    • socket() 函数用来创建套接字,确定套接字的各种属性,

      然后服务器端要用 bind() 函数将套接字与特定的 IP 地址和端口绑定起来,

      只有这样,流经该 IP 地址和端口的数据才能交给套接字处理。类似地,客户端也要用 connect() 函数建立连接。

    • sock 为 socket 文件描述符
    • addr 为 sockaddr 结构体变量的指针
    • addrlen 为 addr 变量的大小,可由 sizeof() 计算得出。

    connect()函数

    int connect(int sock, struct sockaddr *serv_addr, socklen_t addrlen);  //Linux
    int connect(SOCKET sock, const struct sockaddr *serv_addr, int addrlen);  //Windows
    

    listen()函数

    int listen(int sock, int backlog);  //Linux
    int listen(SOCKET sock, int backlog);  //Windows
    • 对于服务器端程序,使用 bind() 绑定套接字后,还需要使用 listen() 函数让套接字进入被动监听状态,再调用 accept() 函数,就可以随时响应客户端的请求了。
    • sock 为需要进入监听状态的套接字
    • backlog 为请求队列的最大长度。

     accept()函数

    int accept(int sock, struct sockaddr *addr, socklen_t *addrlen);  //Linux
    SOCKET accept(SOCKET sock, struct sockaddr *addr, int *addrlen);  //Windows
    
    • 当套接字处于监听状态时,可以通过 accept() 函数来接收客户端请求。
    • sock 为服务器端套接字
    • addr 为 sockaddr_in 结构体变量
    • addrlen 为参数 addr 的长度,可由 sizeof() 求得。

     wirte()函数

    ssize_t write(int fd, const void *buf, size_t nbytes);
    •  fd 为要写入的文件的描述符
    • buf 为要写入的数据的缓冲区地址
    • nbytes 为要写入的数据的字节数。
    • size_t 是通过 typedef 声明的 unsigned int 类型
    • ssize_t 在 "size_t" 前面加了一个"s",代表 signed,即 ssize_t 是通过 typedef 声明的 signed int 类型。

    read()函数

    ssize_t read(int fd, void *buf, size_t nbytes);
    

      

    做一个优秀的程序媛
  • 相关阅读:
    AUTOSAR-文档阅读
    前端 html
    http协议
    python格式化输出
    IO模型
    协程函数
    伟大的GIL
    苑之歌(进程,线程)
    python之模块导入和包
    任性计算器
  • 原文地址:https://www.cnblogs.com/oytt/p/13542345.html
Copyright © 2020-2023  润新知