English 中文(简体)
关闭ServerSocket-如何正确检查客户端套接字是否已关闭?
原标题:Closing ServerSocket - how to properly check if client socket is closed?
  • 时间:2011-02-15 17:03:39
  •  标签:
  • java
  • sockets

我创建了一个运行以下代码的新线程:

public static void startServer() throws IOException {
    serverSocket = new ServerSocket(55000);
    Socket clientSocket = serverSocket.accept(); 
}

The above code is run in a thread. Now, in my main class, I successfully create a socket connection to the server and I have checked it s integrity which is fine. here is the code:

Socket testServerSocket = new Socket("127.0.0.1", 55000);
assertEquals("/127.0.0.1", testServerSocket.getInetAddress().toString());
assertEquals(55000, testServerSocket.getPort());

This runs perfect. Then, again from my main, I kill the server connection that closes the connection on the server side. However the following code keeps failing: assertEquals(false, testServerSocket.isBound());

它不断回归真实。同样,如果我检查连接的远程IP地址,它不会返回null,而是返回/127.0.0.1。你知道为什么会发生这种情况吗?非常感谢你的帮助

最佳回答

我不是套接字方面的专家(我知道它们是什么,但从未在Java上使用过套接字,只在Linux上使用过C),但我喜欢JavaDoc for java.net.Socket声明,套接字是两台机器之间通信的端点。因此,虽然关闭服务器端套接字确实会破坏两个套接字(服务器端和客户端)之间的连接,但客户端套接字仍然是绑定的,因此isBound()返回true。也许您打算调用isConnect()还是isClosed()

问题回答

暂无回答




相关问题
Spring Properties File

Hi have this j2ee web application developed using spring framework. I have a problem with rendering mnessages in nihongo characters from the properties file. I tried converting the file to ascii using ...

Logging a global ID in multiple components

I have a system which contains multiple applications connected together using JMS and Spring Integration. Messages get sent along a chain of applications. [App A] -> [App B] -> [App C] We set a ...

Java Library Size

If I m given two Java Libraries in Jar format, 1 having no bells and whistles, and the other having lots of them that will mostly go unused.... my question is: How will the larger, mostly unused ...

How to get the Array Class for a given Class in Java?

I have a Class variable that holds a certain type and I need to get a variable that holds the corresponding array class. The best I could come up with is this: Class arrayOfFooClass = java.lang....

SQLite , Derby vs file system

I m working on a Java desktop application that reads and writes from/to different files. I think a better solution would be to replace the file system by a SQLite database. How hard is it to migrate ...

热门标签