如何使用java连续向端口(TCP)发送数据?

时间:2017-08-28 12:13:08

标签: java network-programming

我想连续向客户端发送数据,无论客户端是否正在使用数据。 我尝试了以下方式:

public class Ser {
public static void main(String[] args) {
    int number,temp;
    try {
        ServerSocket s1 = new ServerSocket(1342);
        Socket clientSocket = s1.accept();

        PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
        number = 0;
        while (number <= 100) {
            Thread.sleep(1000);
            System.out.println("here");
            out.println(number);
            number++;
        }


    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}
}

但上面的代码不起作用。 如何在Windows中将数据连续发送到端口?

1 个答案:

答案 0 :(得分:1)

如果客户端不打算使用(读取)数据,则无法通过Socket连续向客户端发送数据。 (

  • 当我说“不可能”时......如果服务器无限期地无阻塞地发送,那么“管道”将需要能够缓冲无限大量的数据。这实施起来是不切实际的。

  • 并且在实现某些内容时会遇到很大的问题,客户可以在不阅读数据的情况下跳过数据。怎么知道何时停止跳绳?

你可以使用数据报(例如UDP)和DatagramSocket但是你有相反的问题。客户端可能无法接收所有已发送的数据。

我注意到您的问题的原始版本中存在错误,但我认为这是一个简单的拼写错误,并且不存在于您的实际代码中。