あなたの助けと別のリソースを読んだ後、私は epoll を正常に使用することができました。私が今直面している問題は、EPOLLOUT イベントの戻り値とは異なる FD に送信する必要があることです。したがって、5 つの FD がある場合は、 1 に送信し、次に 4 に送信し、次に 1 に送信し、次に 5 に送信します。
次の疑似コードは、IN イベントと OUT イベントの両方で現在持っているものです。
while(1) {
rval = epoll_wait();
for (i = 0; i < rval; i++) {
if (events & EPOLLOUT) {
//send to the ready FD for sending
}
if (events & EPOLLIN) {
//Receive from ready fd, this part is perfect for my application
}
}
}
私がする必要があるのは、次のようなものです
char buff[100];
fd = read_data(buff); // read data ready to send, the return value is the FD the application should send the returned data to
send(fd, buff, 100, 0);
そして、常にすべての fd からデータを受信するので、任意の FD からデータを受信するには EPOLLIN が必要です。その方法がわかりません。助けていただけますか?