epoll

    0熱度

    1回答

    我有一個epoll服務器,有時會打開傳出連接,使用其主機名錶示。由於傳入連接流量的速度很高,我不想阻止像getaddrinfo()或gethostbyname()之類的地方。當然,我可以實現一個緩存加一個新的線程,在那裏執行主機名解析。是否有一種單線程非阻塞方式來將主機名解析爲IP?

    0熱度

    1回答

    我想知道什麼常見的編程情況/錯誤可能會導致服務器進程我已經進入CLOSE_WAIT,但實際上並沒有關閉套接字。 我想要做的是觸發這種情況,以便我可以修復它。在一個正常的開發環境中,我一直無法觸發它,但在服務器上使用的相同代碼偶爾會得到它們,所以在很多天之後,我們有數百個代碼。 谷歌搜索close_wait,它實際上似乎是一個非常普遍的問題,即使在成熟和所謂寫得好的服務,如nginx。

    1熱度

    1回答

    我有兩種方法來設置文件描述符非阻塞。 fcntl(conn_fd, F_SETFD, (fcntl(conn_fd, F_GETFD, 0)|O_NONBLOCK)); 或 fcntl(conn_fd, F_SETFD, (fcntl(conn_fd, F_GETFD)|O_NONBLOCK)); 和 void setnonblocking(int sock) { int opt

    3熱度

    1回答

    我最近在讀Redis。 Redis基於I/O多路複用實現了一個簡單的事件驅動庫。 Redis的說,它會選擇系統所支持的最佳複用,並給出了下面的代碼: /* Include the best multiplexing layer supported by this system. * The following should be ordered by performances, descendi

    0熱度

    1回答

    我正在使用Linux epoll工具在使用C編寫的網絡應用程序上工作。 我的確在實現我自己的事件循環,是的,我知道有這樣的庫爲我做。然而,這只是一個練習,我希望自己實現事件循環。 我想知道如何處理錯誤處理,特別是處理由epoll系統調用返回的錯誤。我應該真的檢查每個返回值嗎?因爲,在我看來,由e返回的一些錯誤。 G。 epoll_ctl是邏輯錯誤而不是運行時錯誤;我的意思是,唯一一次我看到epol

    3熱度

    1回答

    我創建了一個sigset_t並將其設置爲空,然後添加SIGCHLD給它,然後將其設置BLOCK: sigset_t sigmask; sigemptyset (&sigmask); sigprocmask (SIG_BLOCK, &sigmask, NULL); 然後創建一個signalfd通過signalfd4() int signalfd = signalfd4 (-1, &sigm

    0熱度

    1回答

    我正在使用epoll系統調用來處理TCP對話中的多個客戶端。 我已經註冊epoll與FD: epoll_ctl (efd, EPOLL_CTL_ADD, fd, &event); ,並能夠與比較FD的使用: if(conn->getSockfd() == events[i].data.fd) // .... 但隨着epoll的數據結構 typedef union epoll_da

    0熱度

    1回答

    我正在寫一個給定的協議使用TCP網絡客戶端,我有一些哲學問題的整體架構的東西。 有時可能發生的情況是我沒有完整的請求數據,而且我可能需要讀取比當前可用的字節更多的字節,我想有時候我可以在需要的時候獲得另一個請求的部分內容。在這種情況下通常採用什麼方法?

    1熱度

    2回答

    我有一個用Python編寫的小型服務器/客戶端腳本。 server.py創建一個新的套接字並生成兩個子節點。 在子進程中我註冊了EPOLLIN事件的socket des criptor,所以 我可以在子進程中對套接字進行接受。問題是,兩個孩子都在客戶端請求上通知了 ,但只有一個孩子接受了,另一個孩子則拋出了一個異常「[Errno 11]資源暫時不可用」。 如何防止所有兒童獲得通知,如果他們無法在套

    0熱度

    1回答

    我有兩個版本的Python編寫的簡單套接字服務器。 第一個版本使用epoll + nonblocking aproach,並且似乎比阻塞套接字+超時的服務器版本要慢。 非阻塞服務器產生10個孩子和孩子在套接字上進行接受。在這種情況下,所有的孩子都得到EPOLLIN通知,但只有一個孩子可以做 接受,所有其他孩子都會得到EAGAIN,這被「除外」忽略。 --- server-nonblocking.p