#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <assert.h>
#include <stdio.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <fcntl.h>
#include <stdlib.h>
#include <sys/epoll.h>
#include <pthread.h>
#define MAX_EVENT_NUMBER 1024
#define TCP_BUFFER_SIZE 512
#define UDP_BUFFER_SIZE 1024
int setnonblocking( int fd )
{
int old_option = fcntl( fd, F_GETFL );
int new_option = old_option | O_NONBLOCK;
fcntl( fd, F_SETFL, new_option );
return old_option;
}
void addfd( int epollfd, int fd )
{
epoll_event event;
event.data.fd = fd;
//event.events = EPOLLIN | EPOLLET;
event.events = EPOLLIN;
epoll_ctl( epollfd, EPOLL_CTL_ADD, fd, &event );
setnonblocking( fd );
}
int main( int argc, char* argv[] )
{
if( argc <= 2 )
{
printf(
linux C++ 同时监听多个端口 同时处理TCP和UDP服务请求的回射服务器
最新推荐文章于 2023-09-11 20:01:48 发布
该博客介绍了如何使用C++在Linux环境下创建一个同时监听多个端口并处理TCP和UDP连接请求的服务器。通过epoll事件驱动模型,实现了对新连接的接受和已有连接的数据收发,确保了并发处理能力。
摘要由CSDN通过智能技术生成