原帖時,(1):accept()返回到標準輸出參考使用並行線程
我一直在學習,從Beej指南網絡編程學校網絡編程。我目前正在爲自己製作一個原型,通過使用線程和I/O多路複用同時在多個連接之間進行通信。我收到一個問題,當我收到一個連接並調用accept()返回一個新的文件描述符爲「new_fd」而不是返回一個新的文件描述符時,它返回1.這對我來說沒有意義,因爲我是不在我的代碼中的任何地方關閉標準輸出,並且accept()應該返回對套接字的引用作爲新的文件描述符,並且據我所知,線程在單個進程中共享相同的文件描述符,所以它不應該是個問題我有它的線程。我認爲這個問題可能是我使用環回從我自己的計算機連接,但是當我通過引用我的IP地址或另一臺計算機進行連接時,它也導致返回fd爲1的錯誤。我不知道在哪裏找了來解決這個問題
原帖代碼: http://pastebin.com/APQYjxg9 (我貼過我的所有代碼)
編輯本作清晰。我的代碼有兩個錯誤。第一個是由R指出..馬上和代碼片段是在這裏:
if (value = pthread_create((chat+chat_count), NULL, chatDaemon, (void *) &new_fd) != 0)
{ -snip- }
void * chatDaemon(void * fd)
{
int my_fd = *((int *)fd);
-snip-
}
我揣摩出了什麼問題,並張貼我的答案。代碼段,在這裏:
if (new_fd = accept(listen_fd, (struct sockaddr*) &(remoteHost), &addrlen) != -1) { -snip-}
呃,對不起,我沒有抓到這個。不過,「壁」本來可以抓住它。 – 2015-01-08 16:56:00