我有一个使用java的服务器客户端程序,我尝试创建一个ServerSocket
有端口和客户端Socket
具有不同的端口,并且它们无法相互连接。客户端抛出ConnectException
。当我将 Client 上的套接字更改为与 ServerSocket 使用的相同时,它们就起作用了。
据我从这个帖子的答案中了解到Java网络:解释Socket中的InputStream和OutputStream https://stackoverflow.com/questions/12715321/java-networking-explain-inputstream-and-outputstream-in-socket如果一台机器创建一个带有端口的套接字,那么该套接字就会绑定到该机器,那么为什么客户端和服务器需要使用相同的端口来相互连接?
另外,两个应用程序不能在一台机器上使用相同的端口,那么当两个具有相同端口的不同服务器和一台机器需要通过两个不同的应用程序连接到它们时会发生什么?
您需要对 TCP 通信有一些基本了解。只是谷歌 TCP 教程。
简而言之;服务器将侦听特定端口。当服务器正在侦听某个端口时,它就会绑定到该端口。一台机器上只有一个服务器(或进程)可以侦听某个端口。
客户端将连接到计算机并指定进行通信的端口。如果服务器正在侦听客户端请求的端口,则会发生通信。否则连接无法继续。
因此服务器绑定(或监听)的端口必须与客户端指定的端口相同。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)