// Server side implementation of UDP client-server model
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/epoll.h>
#include <thread>
#include <iostream>
void epoll_read_stdin(){
int file_fd = 0;//stdin 的fd是0
int epoll_fd = epoll_create(1024);
struct epoll_event event;
event.events = EPOLLIN;
event.data.fd = file_fd;
epoll_ctl(epoll_fd,EPOLL_CTL_ADD,file_fd,&event);
struct epoll_event event_buf[16];
char read_buf[1024];
while (true){
int cnt = epoll_wait(epoll_fd,event_buf,16,-1);
if (cnt<0){
printf("epoll error\n");
return ;
}else{
for(int i=0;i<cnt;++i){
int n = read(event_buf[i].data.fd,read_buf,1024);
read_buf[n]=0;
printf("epoll recieve from stdin: %s\n",read_buf);
}
}
}
}
void select_read_stdin(){
int file_fd =0;//stdin 的fd是0
fd_set read_set;
char read_buf[1024];
while (true){
memset(&read_set,0,sizeof(read_set));
FD_SET(file_fd,&read_set);
int ret = select(file_fd+1,&read_set,NULL,NULL,NULL);
if(ret<0){
printf("ret<0 \n");
return ;
}else{
if (FD_ISSET(file_fd,&read_set)){
int n = read(file_fd,read_buf,1024);//stdin 的fd是0
read_buf[n]=0;
printf("select recieve from stdin: %s\n",read_buf);
}
}
}
}
int main(){
//select_read_stdin();
epoll_read_stdin();
return 0;
}