2010-09-17 134 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