- 并发服务器:实现客户端发送信息,由服务器接收并转发给客户端
- poll函数
头文件:
#include <poll.h>
函数原型:
int poll(struct pollfd *fds, nfds_t nfds, int timeout);
函数参数:
fds:结构体数组首地址
nfds:要监测的文件描述符的个数
timeout:超时时间
函数功能:
等文件描述符集合中中的文件描述符准备就绪
返回值:
>0:准备就绪的文件描述符的个数
0:超时
-1:错误 - 服务器端
- 创建套接字(socket)
- 绑定服务器IP地址与端口号(bind)
- 监听套接字(listen)
- 等待客户端连接(accept)
- 定义文件描述符集合结构体,并将需要监测的文描述符添加入集合
- 循环监测客户端文件描述符(poll)
4.客户端
- 创建套接字(sockfd)
- 绑定服务器IP地址与端口号(connect)
- 通信
5.server.c
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/socket.h>
#include <fcntl.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/time.h>
#include <sys/select.h>
#include <poll.h>
#define SIZE 64
int server_init(char *ipaddr, unsigned short port, int backlog)
{
int sockfd = socket(