07 socket编程(二)
TCP 客户/服务器模型
宏 SOMAXCONN 表示队列的最大值
listen(listenfd, SOMAXCONN);
12 socket编程(七)
连接建立三次握手、连接终止四次握手
netstat -an | grep tcp
17 socket编程(十二)
select 限制
一个进程可以打开的文件描述符的个数
ulimit -n
修改进程可以打开的文件描述符的个数
ulimit -n 2048
也可以通过程序来修改,先来介绍一下,以下函数
int getrlimit(int resource, struct rlimit *rlim);
int setrlimit(int resource, const struct rlimit *rlim);
struct rlimit{
rlim_t rlim_cur; /* Soft limit */
rlim_t rlim_max; /* Hard limit (ceiling for rlim_cur */
};
修改
struct rlimit r1;
if(getrlimit(RLIMIT_NOFILE, &r1) < 0)
ERR_EXIT("getrlimit");
printf("%d\n", (int)r1.rlim_max);
r1.rlim_cur = 2048;
r1.rlim_max = 2048;
if(setrlimit(RLIMIT_NOFILE, &r1) < 0)
ERR_EXIT("setrlimit");
if(getrlimit(RLIMIT_NOFILE, &1) < 0)
ERR_EXIT("getrlimit");
printf("%d \n", (int)r1.rlim_max);
poll
#include <poll.h>
int poll(struct pollfd *fds, nfds_t nfds, int timeout);
struct pollfd{
int fd; // file descriptor
short events; // requested events
short revents; // returrned events
};
值 | 含义 | 值 | 含义 |
---|---|---|---|
POLLIN | 有数据到来, 文件描述符可读 | POLLNVAL | 非法请求 |
POLLPRI | 有紧急数据可读,例如带外数据 | POLLRDNORM | 与POLLIN相同 |
POLLOUT | 文件可写 | POLLRDBAND | 优先可读 |
POLLRDHUP | 流式套接字半关闭 | POLLWRNORM | 与POLLOUT相同 |
POLLERR | 错误发生 | POLLWRBAND | 优先数据可写 |
POLLHUP | 关闭 |
19 socket编程(十四)
UDP:ICMP异步错误
对等方没有启动,sendto函数发送后,会在recvfrom阻塞,没有收到通知
怎么解决呢,connect连接套接字,就可以收到通知