无论客户端是否使用数据,我都想不断地向客户端发送数据。 我尝试了以下方式:
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 中连续发送数据到端口?
最佳答案
如果客户端不打算使用(读取)数据,则不可能通过 Socket
向客户端连续发送数据。 (
当我说“不可能”时...如果服务器可以无阻塞地无限期发送,那么“管道”就需要能够缓冲无限期的大量数据。这将是不切实际的实现。
而且实现客户端可以跳过数据而不读取数据的功能会遇到很大的问题。它怎么知道什么时候停止跳过?
您可以使用数据报(例如 UDP)和 DatagramSocket
,但您会遇到相反的问题。客户端可能无法接收所有发送的数据。
我注意到您问题的原始版本中存在错误,但我假设这是一个简单的拼写错误,并没有出现在您的实际代码中。
关于java - 如何使用java持续向端口(TCP)发送数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45918725/