2010-09-17 170 views
0

我使用accept()後如何更改套接字ID/FD?可以說我在sockfd 3上綁定()並且接受的客戶端在sockfd 4上,我如何將sockfd更改/移動到1000?C++ Linux TCP套接字fd

操作系統:Ubuntu的

+3

你爲什麼要那樣做去? – 2010-09-17 05:46:46

+1

Dean在那裏有一個很好的問題。你可能有一個很好的理由(可能涉及到fork()),但它更有可能是你認爲它會實現一些不會的事情,或者混淆了fds與端口號的導入...... – 2010-09-17 05:54:13

+0

我不認爲我很困惑fds與端口。 – tenev 2010-09-17 12:20:11

回答

1

你仍然沒有指定的操作系統,所以我將與* nix中:)

http://linux.die.net/man/2/dup2

+0

,幫助很多,但接下來 - 我如何釋放與原始的FD相關的資源,而不關閉連接 - 通常關閉()?或dup2()使它始終自動? – tenev 2010-09-17 06:04:10

+0

嗨,我剛剛測試了dup2(),完美地滿足了我所需要的! – tenev 2010-09-17 07:22:20

+0

這裏是我非常基本的東西: // myincockock = accpet(); if(check is admin ip) { int oldsock = acceptsock; //從接收sockfd(接受最低免費)複製到自定義sockfd accepting = dup2(oldsock,800 + serverconnections); //在我的fd_set中添加管理數據 // // //發佈accept()的資源sockfd //關閉 - 不關閉連接!完善! close(oldsock); } 其他 {// 正常的客戶端連接 } 我現在可以輕鬆地辨別類型的客戶端:) – tenev 2010-09-17 07:35:47