Java Socket和ServerSocket问题

5

我有这段代码:

ServerSocket serversocket=new ServerSocket(DEFAULTPORT);
serversocket.setSoTimeout(1000);
Socket socket=serversocket.accept();
  1. 关闭 serversocket 对象是否也会影响 socket 对象的状态?

  2. 如果我关闭 serversocket 对象,我还能使用 socket 对象进行流操作吗?


哎?这跟我的问题有什么关系? - Richeve Bebedor
1个回答

3
短答案是:

1) 不行

2) 可以

长答案是:
ServerSocket 等待客户端连接(他在 accept 方法中等待)。当有客户端时,accept 方法会返回,更具体地说,它会返回一个 Socket 对象,该对象代表服务器与客户端连接的服务器端点。如果服务器关闭他的服务器套接字,他将不再侦听(他将不再接受新客户端),但已经建立套接字连接的客户端不受影响。
你的代码本质上并没有“错误”,但它只能接受一个客户端,并且仅在1000毫秒内连接。
以下是一个包括示例代码的介绍:

http://download.oracle.com/javase/tutorial/networking/sockets/clientServer.html


非常感谢!这些代码只是为了澄清,让读者理解我的意思。 - Richeve Bebedor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接