怎樣正確使用 epoll 模型的非阻塞 listeningFd 的 accept 和 connect?

時間 2021-06-05 01:32:45

1樓:Dennis

1.首先開啟乙個監聽TCP,設定成非阻塞

int val = fcntl(listenfd, F_GETFL, 0);

val |= O_NONBLOCK;

fcntl (listenfd, F_SETFL, val);

2.把listenfd加入到epoll中

m_fd_epoll = epoll_create(MAXFDS);

ev.events = EPOLLIN|EPOLLERR|EPOLLHUP|EPOLLPRI;

ev.data.fd = listenfd;

epoll_ctl(m_fd_epoll, EPOLL_CTL_ADD, listenfd, &ev)

3.開始監聽

while (true)

{nfds = epoll_wait(m_fd_epoll, events, MAXFDS, 1000);

if( nfds > 0)

{for( int i = 0; i < nfds; i++ )

if( events[i].data.fd == listenfd)

int newfd;

用accept返回newfd

把newfd也設定成非阻塞

加入到epoll中

connect也一樣,得到fd之後,設定成非阻塞,加入到epoll中就可以了

怎樣才能正確使用眼霜

你用正確的方法使用眼霜了嗎?沒有正確的手法,再貴的眼霜用起來都事倍功半哦 不同的眼部問題就要採用不同的使用眼霜手法 標準護眼 沒有眼部問題的寶寶們 採用時針法。以眼角為起點,往眼睛外側輕柔按摩,左眼順時針揉壓,右眼逆時針揉壓。有黑眼圈的寶寶們要用畫圈法。輕柔下眼眶眼角 中間 眼尾,輕輕畫圈滑動。有眼...

unity5怎樣正確匯入FBX,模型大小為什麼會發生變化?

梁偉國Waigo 在 Maya 或者3DMax 裡匯出時,單位設成公尺或厘公尺,不要用英吋。造成這個原因多半是 fbx 有好幾個常用的格式標準,它們之間不相容導致的,操蛋的 Autodesk!我們模型一般都是在Blender3D裡做的,外來的模型也都先匯入到 Blender 裡做統一的整理。標準這個...

怎樣正確使用大學圖書館?

巧克力蛙 只需合理組織時刻仍是能夠兩者統籌的,我是學工科的,可咱們教授說多看哲學類的書本能夠對咱們的學習起到很大協助,哲學是思想的轉變,而思想是學習中極其重要的。所以從本質上來說,你要求的兩方面並不牴觸,而是互利合作的。至於時刻的組織就要看你的課程表了,其實大學的課程花不了多少時刻,至於書的型別,是...