Sockets ServerSocket和套接字可以使用同一个端口吗?

Sockets ServerSocket和套接字可以使用同一个端口吗?,sockets,port,tuples,serversocket,Sockets,Port,Tuples,Serversocket,现在我想使用一个serversocket监听端口x,同时我想使用端口x建立一个到其他serversocket的套接字,这意味着有一个serversocket,一个套接字将使用一个相同的端口,这可能吗? 我知道对于套接字,它是四元组,一个端口可以有多个套接字,但是对于一个套接字和服务器套接字? 谢谢你的关注 你的问题很难理解,因为你说的“端口”不清楚是指源端口还是目标端口 如果您的问题是“我可以接受X端口上的入站连接并同时进行X端口的出站连接吗?”答案是肯定的。(您可以绑定并连接到同一端口。) 如


现在我想使用一个serversocket监听端口x,同时我想使用端口x建立一个到其他serversocket的套接字,这意味着有一个serversocket,一个套接字将使用一个相同的端口,这可能吗?
我知道对于套接字,它是四元组,一个端口可以有多个套接字,但是对于一个套接字和服务器套接字?

谢谢你的关注

你的问题很难理解,因为你说的“端口”不清楚是指源端口还是目标端口

如果您的问题是“我可以接受X端口上的入站连接并同时进行X端口的出站连接吗?”答案是肯定的。(您可以绑定并连接到同一端口。)


如果您的问题是,“我可以在端口X上侦听并从端口X进行出站连接吗?”答案是否定的——除非您使用两个不同的本地IP地址。对于单个IP地址上的TCP,只能绑定到端口一次。如果您绑定侦听,从那时起,端口将保留给您将接受的传入连接—您不能再次绑定到它以从中进行传出连接。

您的问题很难理解,因为您说“端口”时不清楚您是指源端口还是目标端口

如果您的问题是“我可以接受X端口上的入站连接并同时进行X端口的出站连接吗?”答案是肯定的。(您可以绑定并连接到同一端口。)


如果您的问题是,“我可以在端口X上侦听并从端口X进行出站连接吗?”答案是否定的——除非您使用两个不同的本地IP地址。对于单个IP地址上的TCP,只能绑定到端口一次。如果您绑定到侦听,从那时起,端口将保留给您将接受的传入连接—您无法再次绑定到它以从中建立传出连接。

尝试时会发生什么?为什么?使用固定出站端口号几乎没有任何有效的理由。如果我创建一个serversocket和一个具有一个端口的套接字
serversocket server=new serversocket(2000)//侦听连接请求
套接字服务器=新套接字(localIP,2000;Distantp,DistantPort)//使用同一个端口连接远程
但有一个异常“已在使用”
由于套接字是四元组,我认为不应该有这个问题,或者有其他解决方案?@seaguest:为什么你认为不应该有这个问题?是什么使整个4元组保持不变?如果计算机只有一个IP地址,并且两个IP地址都使用相同的端口,那么是什么阻止计算机连接到同时与入站连接精确匹配的远程IP/端口?尝试时会发生什么?为什么?使用固定出站端口号几乎没有任何有效的理由。如果我创建一个serversocket和一个具有一个端口的套接字
serversocket server=new serversocket(2000)//侦听连接请求
套接字服务器=新套接字(localIP,2000;Distantp,DistantPort)//使用同一个端口连接远程
但有一个异常“已在使用”
由于套接字是四元组,我认为不应该有这个问题,或者有其他解决方案?@seaguest:为什么你认为不应该有这个问题?是什么使整个4元组保持不变?如果计算机只有一个IP地址,并且两个IP地址都使用相同的端口,那么是什么阻止计算机连接到一个远程IP/端口,而该远程IP/端口同时与入站连接精确匹配?如果我创建一个serversocket和一个端口为serversocket server=new serversocket(2000)的套接字//侦听连接套接字服务器的请求=新套接字(localIP,2000;Distantp,DistantPort)//使用同一端口连接远程端口,但出现异常“已使用”?然而,我看到一些ptogram使用相同的端口来监听和通信,可能我误解了,这真的不可能吗?一个程序可以监听端口8080,也可以连接出站连接到端口8080。程序不能在端口8080上侦听,也不能从端口8080进行出站连接。如果我创建一个serversocket和一个端口为serversocket server=new serversocket(2000)的套接字//侦听连接套接字服务器的请求=新套接字(localIP,2000;Distantp,DistantPort)//使用同一端口连接远程端口,但出现异常“已使用”?然而,我看到一些ptogram使用相同的端口来监听和通信,可能我误解了,这真的不可能吗?一个程序可以监听端口8080,也可以连接出站连接到端口8080。程序不能在端口8080上侦听,也不能从端口8080进行出站连接。