使用java socket的问题

时间:2011-09-15 08:36:42

标签: java sockets

在java中,我可以编写如下代码:

 ServerSocket ss = new ServerSocket(1111);
 Socket s = ss.accept();
 // here s.getLocalPort() is 1111
 ss.close();
 // here this is ok even s is still connected with a client.
 ss = new ServerSocket(s.getLocalPort());

在客户端:

Socket s = new Socket("localhost", 1111);
// this line will throw an exception. 
ServerSocket ss = new ServerSocket(s.getLocalPort());

我不明白的是,上面两段代码的最后一行似乎没什么区别,为什么它的工作方式不同?任何信息都非常感谢,提前谢谢。

1 个答案:

答案 0 :(得分:1)

在第一种情况下你关闭了套接字,在第二种情况下你没有关闭套接字,所以端口仍然被占用。