是否可以在任何通用平台(例如 Windows)中编写一个服务进程来创建一个套接字,将其绑定(bind)到一个本地“地址:端口”(固定),然后:
- 用它来监听传入的连接(在指定的端口上) 而同时
- 将其用作客户端套接字以连接到其他一些服务(源端口与它向其他人公开的端口相同)?
那是(抱歉语法滥用):
mySocket=套接字(); mySocket.bind(我的地址, 3000); mySocket.connectTo(neighbour, whateverport);//并作为端口 3000 呈现给其他人 mySocket.listen();//它监听 3000 mySocket.accept();
?
iirc,甚至不可能/不建议尝试,即使在 API 不会提示的情况下,但也许是我太照本宣科了……所以我想问你
非常感谢!
最佳答案
不,套接字不能同时用于监听和连接。如果 listen()
已被调用,connect()
将返回一个 WSAEINVAL
错误,并且 listen()
将返回如果 connect()
已被调用,则出现 WSAEISCONN
错误。您需要使用单独的套接字。
关于sockets - TCP:是否可以绑定(bind)一个套接字然后/两者/从它连接并接受它(客户端和服务器规则)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7191962/