客户端和服务器是否需要使用同一端口进行连接?

2022-03-13 00:00:00 sockets port java
我有一个使用Java的服务器-客户端程序,我试图用一个端口创建一个ServerSocket,而用不同的端口创建一个客户端Socket,但它们无法相互连接。客户端引发ConnectException。当我将客户端上的套接字更改为与我用于ServerSocket的套接字相同时,它们可以正常工作。

我从此线程Java Networking: Explain InputStream and OutputStream in Socket的asser了解到,如果计算机使用端口创建套接字,则该套接字将绑定到该计算机,那么为什么客户端和服务器需要使用相同的端口来相互连接?

另外,两个应用程序不能使用一台计算机上的同一端口,所以当两个具有相同端口的不同服务器和一台计算机需要通过两个不同的应用程序连接到这两个服务器时,会发生什么情况?

tcp

您需要对推荐答案通信有一些基本的了解。只需谷歌TCP教程。

简而言之,服务器将侦听特定端口。当服务器侦听某个端口时,它将绑定到该端口。一台计算机上只能有一个服务器(或进程)在侦听某个端口。

客户端将连接到计算机并指定要在其上通信的端口。如果服务器正在监听客户端请求的端口,则会发生通信。否则连接无法继续。

因此服务器绑定(或侦听)的端口必须与客户端指定的端口相同。

相关文章