socket编程2

客户端服务端编程模型:

  

 

   服务器调用序列                                                                        客户端调用序列

  1. 调用socket函数创建套接字                                                    1. 调用socket函数创建套接字  

  2. 调用bind函数绑定本地地址和端口                                          2. 调用connect函数连接服务器

  3. 调用listen函数启动监听                                                          3. 调用read/write函数与服务器通信

  4. 调用accept函数从已连接队列中提取客户端连接                    4. 调用close函数关闭套接字

  5. 调用read/write函数与客服端通信

  6. 调用close函数关闭套接字

 

服务器启动监听后,有很多客户端可以连接上来,连接上来的客户端就会放在一个队列里面,调用accept就可以从队列里面提取客户端的连接

 

socket的创建:

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

  成功返回socket的文件描述符,失败-1;

·   参数:

    domain:

      AF_INET         ipv4

      AF_INET6      ipv6

    type:

      SOCK_STREAM:tcp协议,可靠、面向连接的字节流

      SOCK_DGRAM:udp协议,无连接、无序、不可靠

    protocol:0

   绑定地址:

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

    成功返回0,失败-1

  在端口上监听:

    int listen(int sockfd,int backlog)

    成功返回0,失败-1

    参数:backlog指定进行客户端连接排队的队列长度

  接受连接:

    int accept(int sockfd, struct sockaddr *restrict addr, socklen_t *restrict len)

    成功返回0,失败-1

  客户端连接:

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

    成功返回0,失败-1

  查找绑定到套接字上的地址:

    int getsockname(int sockfd, struct sockaddr *restrict addr, socklen_t *restrict alenp)

    成功返回0,失败-1

  获取对方地址:

    int getpeername(int sockfd, struct sockaddr *restrict addr, socklen_t *restrict alenp)

     成功返回0,失败-1

posted @ 2023-03-07 22:08  踏浪而来的人  阅读(10)  评论(0编辑  收藏  举报