java - 使用 java 客户端/服务器重现 tcp CLOSE_WAIT 状态

标签 java performance tcp java-server

有没有一种简单的方法可以用 java 程序重现 tcp CLOSE_WAIT 状态?

我有一个遗留的 Java 应用程序有这个问题,我希望能够重现它以便我可以测试我的修复。

谢谢

最佳答案

当另一端关闭连接而这一端没有关闭时,连接处于 CLOSE_WAIT 状态。很容易重现:

// Client.java (will sleep in CLOSE_WAIT)
import java.io.*;
import java.net.*;

public class Client
{
    public static void main(String[] args) throws Exception
    {
        Socket socket = new Socket(InetAddress.getByName("localhost"), 12345);
        InputStream in = socket.getInputStream();
        int c;
        while ((c = in.read()) != -1)
        {
            System.out.write(c);
        }
        System.out.flush();

        // should now be in CLOSE_WAIT
        Thread.sleep(Integer.MAX_VALUE);
    }
}

// Server.java (sends some data and exits)
import java.io.*;
import java.net.*;

public class Server
{
    public static void main(String[] args) throws Exception
    {
        Socket socket = new ServerSocket(12345).accept();
        OutputStream out = socket.getOutputStream();
        out.write("Hello World\n".getBytes());
        out.flush();
        out.close();
    }
}

关于java - 使用 java 客户端/服务器重现 tcp CLOSE_WAIT 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16077786/

相关文章:

C#套接字问题

c++ - `boost::asio` `async_resolve` 在Linux上挂起,可能是什么原因?

Java 与 C 简单性能测试

C++:Linux:调用 write() 时 TCP/IP 程序崩溃

java - 使用bytearray加载jar,找不到嵌套类

java - 使用 google sitebricks @embed 在所有 html 页面中嵌入页眉和页脚

performance - 更快的交叉测试(AABB-AABB 或 AABB-triangle)

mysql - 自己的统计数据列或汇总表?

java - 如何使用ibatis获取sql count查询的输出?

java - 在Ubuntu 11.10上的hadoop 0.23.0 java中的classpath问题