基本TCP套接字编程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/isunbin/article/details/84666321

1.  socket函数原型:

#include <sys/socket.h>
int socket(int domain, int type, int protocol);

2. bind函数原型:


#include <sys/socket.h>
int bind(int sockfd, struct sockaddr *my_addr, socklen_t addrlen);

参数:

​
struct sockaddr_in {
    sa_family_t sin_family;  /* 地址族: AF_INET */
    u_int16_t sin_port;      /* 按网络字节次序的端口 */
    struct in_addr sin_addr; /* internet地址 */
};

struct in_addr {
    u_int32_t s_addr;         /* 按网络字节次序的地址 */
};

3. listen函数原型: 设置同时与服务器连接上的上限数(同时进行3次握手的客户端数量)

#include <sys/socket.h>
int listen(int s, int backlog);

参数:

  • backlog:内核为相应套接字排队的最大连接数
  •  

4. accept函数原型:阻塞等待客户端建立连接,成功的话,返回一个与客户端成功连接的socket文件描述符

#include <sys/socket.h>
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);

参数:

  • sockfd:socket函数返回值
  • addr:传出参数——成功与服务器建立连接的那个客户端的地址结构(IP + port)
  • addrlen:传入传出。入:addr的大小。出:客户端addr实际大小
  • 成功:能与服务器进行数据通信的socket对应的文件描述符

5. connect函数原型:

#include <sys/socket.h>
int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);

参数:

扫描二维码关注公众号,回复: 4492185 查看本文章
  • socket函数返回值
  • addr:传入参数——服务器地址结构
  • addrlen:服务器的地址结构大小

注意:如果不使用bind客户端地址结构,采用隐式绑定

猜你喜欢

转载自blog.csdn.net/isunbin/article/details/84666321