Skip to content

layout: post title: "network" subtitle: "network" date: 2019-05-18 10:24:12 author: "none" header-img: "img/posts/default_post.jpg" catalog: true tags: - tag


端口号

最大为65535, 端口号只是个数字,可以被不同的socket连接复用

一个进程的最大连接数

1 进程可以打开的文件数量限制(ulimit -n) 2

网络连接

网络协议,源ip,源端口(port), 目的地址,目的端口

socket编程

服务端

创建套接字 int socket(int domain, int type, int protocol);

绑定服务器ip和端口号 int bind(int socket, const struct sockaddr *address, socklen_t address_len);

监听客户端连接, backlog设置连接队列的大小 int listen(int socket, int backlog);

接受客户端连接,返回与客户端传输的接口,通过参数返回客户端的ip和端口 int accept(int socket, struct sockaddr restrict address, socklen_t restrict address_len);

accept通常放在循环中进行调用, accept不是线程安全的,当没有客户端连接时,accept会被阻塞

客户端

创建套接字 int socket(int domain, int type, int protocol);

连接到服务器,返回 int connect(int socket, const struct sockaddr *address, socklen_t address_len);