Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sockets TCP:是否可以绑定套接字,然后/both/从中连接并从中接受(客户端和服务器规则)?_Sockets_Tcp_Port_Connect_Listen - Fatal编程技术网

Sockets TCP:是否可以绑定套接字,然后/both/从中连接并从中接受(客户端和服务器规则)?

Sockets TCP:是否可以绑定套接字,然后/both/从中连接并从中接受(客户端和服务器规则)?,sockets,tcp,port,connect,listen,Sockets,Tcp,Port,Connect,Listen,在任何通用平台(如Windows)中,是否有可能编写一个服务进程来创建套接字,将其绑定到一个本地“地址:端口”(固定),然后: 使用它侦听传入连接(在指定端口上) 同时 将其用作客户端套接字以连接到其他服务(源端口与它向其他服务公开的端口相同) 也就是说(很抱歉语法滥用): mySocket=socket();mySocket.bind(myaddress,3000); mySocket.connectTo(邻居、任何端口);//并作为端口3000呈现给其他人 mySocket.listen

在任何通用平台(如Windows)中,是否有可能编写一个服务进程来创建套接字,将其绑定到一个本地“地址:端口”(固定),然后:

  • 使用它侦听传入连接(在指定端口上) 同时
  • 将其用作客户端套接字以连接到其他服务(源端口与它向其他服务公开的端口相同)
也就是说(很抱歉语法滥用):

mySocket=socket();mySocket.bind(myaddress,3000); mySocket.connectTo(邻居、任何端口);//并作为端口3000呈现给其他人 mySocket.listen();//它在3000上收听 mySocket.accept()

?

iirc,甚至不可能/不建议尝试,即使在API不会抱怨的情况下,但可能是我太过照本宣科了。。。所以我想问你


非常感谢

否,套接字不能同时用于侦听和连接<如果已调用
listen()
,则code>connect()将返回
WSAEINVAL
错误;如果已调用
connect()
,则
listen()
将返回
WSAEISCONN
错误。您需要使用单独的插座。

如果可以,会出现各种各样的问题。例如,如果select()返回套接字是可读的,那么您是执行recv()还是执行accept()?您需要两个套接字来扮演这两个角色

一个插座有什么优点?例如,如果您希望在发生有趣的事情(传入连接、传入数据)之前执行阻塞读取,那么还有其他选择。在该示例中,您将使用select()一次阻塞两个套接字。select()的结果告诉您哪个套接字已就绪。它告诉您是要从一个套接字接受()新连接,还是要从另一个套接字接受()新数据