sockets - TCP:是否可以绑定(bind)一个套接字然后/两者/从它连接并接受它(客户端和服务器规则)?

标签 sockets tcp port connect listen

是否可以在任何通用平台(例如 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/

相关文章:

c++ - QSocketNotifier : Socket notifiers cannot be enabled or disabled from another thread

linux - 将默认端口重定向到 linux/unix 中的特定端口

Node.js + Socket.io + Redis 应用程序通过 PM2,内存占用较大

c - Unix 套接字 C : Connecting from another network

performance - 搜索模式以创建用于高性能消息传递的 TCP 连接池

linux - 需要删除与 iptables 建立的连接

port - 如何更改Freeradius3默认端口(auth1812 & Account1813)

c++ - switch case 语句在 Arduino/C++ 中的工作原理

c# - 如何将端口 IAX2 的 UDP header 转换为可读字符串

networking - 在拥挤的局域网中,UDP 发送速度是否比 TCP 快?