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

如何使用java将数据连续发送到端口(TCP)?,java,network-programming,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 =

无论客户机是否正在使用数据,我都希望向客户机连续发送数据。 我试过以下方式:

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();
    }

}
}
公共类服务{
公共静态void main(字符串[]args){
整数,温度;
试一试{
ServerSocket s1=新的ServerSocket(1342);
Socket clientSocket=s1.accept();
PrintWriter out=新的PrintWriter(clientSocket.getOutputStream(),true);
数字=0;

而(number如果客户端不打算使用(读取)数据,则不可能通过
套接字持续向客户端发送数据(

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

  • 在实现客户端可以跳过数据而不读取数据的功能时会遇到巨大的问题。它如何知道何时停止跳过

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



我注意到您的问题的原始版本中有一个错误,但我假设这是一个简单的打字错误,并且没有出现在您的实际代码中。

谢谢您的回复,因为客户只需要最新的数据,他不需要以前的数据。就像RFID阅读器不断地向端口发送数据一样。(就像我想要的那样)这并没有改变答案。@paper1111--请在您自己的答案中解释这一点。请注意,我们关注的是发送数据的服务器端代码,而不是读取数据的客户端。要求发送方可以发送数据,而不管客户端做了什么。事实上,即使进行了更正,程序仍然可以发送数据m无法执行OP实际要求的操作。请指出是什么让您认为它不起作用。客户端代码是什么?