在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java  Linux  網(wǎng)絡(luò)安全/ linux下tcp編程如何正確的關(guān)閉套接字?

linux下tcp編程如何正確的關(guān)閉套接字?

假設(shè)服務(wù)端有段代碼,開了兩個線程,一個處理客戶端連接,一個讀取客戶端發(fā)送的消息。

m_fd = socket(AF_INET, SOCK_STREAM, 0);

bind(...);
listen(...);

pid_t pid;
while (1)
{
    m_client_fd = accept(m_server_fd, (sockaddr*)&client_addr, &len);

    pid = fork();

    if (pid == 0) // 子進(jìn)程
    {
         close(m_fd); // 關(guān)閉

         do_read_from_client(m_client_fd); // 處理m_client_fd客戶端發(fā)過來的消息

         close(m_client_fd); // 關(guān)閉
         exit(EXIT_SUCCESS);
    }
    else
    {
         close(m_client_fd); // 關(guān)閉
    }
}

/**********************這邊還有一個關(guān)閉***************************/

close(m_fd); // 關(guān)閉

/****************************************************************/

在涉及到多線程的時候,如何正確的關(guān)閉文件描述符 fd,我上面的寫法對么?

回答
編輯回答
薔薇花
  1. 你并不是只開了 2 個進(jìn)程,而是來一個請求就開一個進(jìn)程
  2. m_server_fd 哪里出來的?
  3. 明確下 進(jìn)程 和 線程,在線程中可不一樣

如果 m_server_fd 和 m_fd 是一個東西,只是寫錯了,那就沒啥問題

2017年12月1日 12:11
編輯回答
不二心

不對

服務(wù)端套接字 不用關(guān)閉 關(guān)閉了就收不了請求了,
客戶端套接字在子進(jìn)程中關(guān)閉就行了, 不能在父進(jìn)程關(guān)閉, 父進(jìn)程關(guān)了 子進(jìn)程萬一執(zhí)行慢不就讀不到了嗎

2018年4月29日 18:28