Android Java ServerSocket端口号不是它应该的样子

时间:2012-02-27 23:38:47

标签: java android sockets port

您好我正在进行android开发,并在使用套接字API时发现了一些奇怪的东西。

我从

创建的套接字之间
ServerSocket server = new ServerSocket(4444);
Socket client = server.accept();

client.getPort();

不是4444。

由于端口号几乎是随机的,因此客户端无法与服务器应用程序通信。 任何信息或建议都会有所帮助!

完整的示例项目就在这里。

http://vext.eclipselabs.org.codespot.com/files/SocketTest.zip

提前致谢!

3 个答案:

答案 0 :(得分:5)

引自 Head First Java

enter image description here

答案 1 :(得分:0)

当客户端套接字到服务器套接字时,它将在客户端计算机上采用随机空端口(未使用的端口)..但是此客户端应该连接到具有服务器的特定端口...

指定服务器套接字端口时;你正在听这个港口。并且在接受新的套接字连接时,您应该为连接的客户端创建一个特定的引用,并继续监听传入的新连接;然后使用此引用与客户端连接进行通信。

答案 2 :(得分:0)

来自Java Docs of Socket class

public int getPort() 返回此套接字连接的远程端口。 返回: 此套接字连接的远程端口号,如果尚未连接套接字,则为0。

尝试调用getLocalPort()