• socket编程部分API


      以TCP协议为例,UNIX的相关API

      

    int socket(int domain , int type , int protocol);
    

      根据指定的地址族,数据类型,协议来分配一个socket的描述字以及所占用的资源。

      domain:协议族,常见的有AF_INET、AF_INET6、AF_LOCAL、AF_ROUTE,其中AF_INET代表ipv4地址

      type:socket类型,常见的socket类型有SOCK_STREAM、SOCK_DGRAM、SOCK_RAW、SOCK_PACKET、SOCK_SEQPACKET等

      protocol:协议。常见的协议有IPPROTO_TCP、IPPTOTO_UDP、IPPROTO_SCTP、IPPROTO_TIPC等

      返回值:返回一个套接口描述符0 or 1 or 2,如果出错,则返回-1。 

    int bind(int sockfd , const struct sockaddr * addr , socklen_t addrlen);
    

      把一个地址族中的特定地址赋给socket

      sockfd:socket描述字,即是sock引用

      addr:要绑定给sockfd的协议地址

      addrlen:协议地址的长度

      通常服务器在启动时要绑定一个众所周知的IP地址和端口,用于提供服务,客户通过它就可以连接到服务器。但是客户端与之不同,客户端是在connect():时自动分配一个端口。这就是为什么客户没有调用bind();的操作而服务器在listen();前需要bind();的操作。

      

    int listen(int sockfd , int backlog);
    

      监听socket

      sockfd:要监听的socket描述字

      backlog:相应socket可以排队的最大连接个数

    int connect(int sockfd , const struct sockaddr *addr , socklen_t addrlen);
    

      连接某个socket

      sockfd:某个客户端的描述字

      addr:服务器的socket地址

      addrlen:socket地址的长度

    int accept(int sockfd , const struct sockaddr *addr , socklen_t *addrlen);
    

      TCP服务器监听到用户请求后,调用accept();接收请求

      sockfd:服务器的socket描述字

      addr:服务器的socket地址

      addrlen:服务器socket地址的长度

      · 返回值类型:返回的是一个不同的socket,这个socket保存的是你客户端的socket信息

    ssize_t read(int sockfd , void *buf , size_t count);
    

      读取socket内容

      sockfd:socket描述字

      buf:缓冲区

      count:缓冲区的长度

    ssize_t write(int sockfd , void *buf , count);
    

      写入socket内容

      sockfd:socket描述字

      buf:缓冲区

      count:缓冲区长度

    int close(int sockfd);
    

      标记socket为关闭,使相应socket描述字的引用计数为-1,当引用计数为0时,触发TCP客户端向服务器发送终止连接请求

    ————全心全意投入,拒绝画地为牢
  • 相关阅读:
    Spring MVC重定向和转发以及异常处理
    Spring MVC注解开发入门
    深入理解Spring MVC
    Spring MVC入门
    Spring Quartz实现任务调度
    Spring WebService入门
    Spring JavaMail发送邮件
    (一)Eureka 服务的注册与发现
    AvtiveMQ 参考
    python
  • 原文地址:https://www.cnblogs.com/Bw98blogs/p/7525599.html
Copyright © 2020-2023  润新知