繁体   English   中英

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

[英]Reproduce tcp CLOSE_WAIT state with java client/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();
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM