在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());
我不明白的是,上面两段代码的最后一行似乎没什么区别,为什么它的工作方式不同?任何信息都非常感谢,提前谢谢。
答案 0 :(得分:1)
在第一种情况下你关闭了套接字,在第二种情况下你没有关闭套接字,所以端口仍然被占用。