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

标签 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 中连续发送数据到端口?

最佳答案

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

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

  • 而且实现客户端可以跳过数据而不读取数据的功能会遇到很大的问题。它怎么知道什么时候停止跳过?

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


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

关于java - 如何使用java持续向端口(TCP)发送数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45918725/

相关文章:

c - 基于网络事件的编程真的更好吗……?

java - 如何确定哪个网络。接口(interface)与java一起使用

java - 在小程序声明中调用 javascript 函数

java - 第二维为空的二维数组如何工作?

java - 通过 Java 中的按钮终止服务器程序

java - 客户端中的 DatagramSocket 未绑定(bind)到服务器中的端口。端口已被使用

java - 在 JFrame 关闭上运行函数

Java - 文本字段上的占位符

java - java中对线程的引用何时超出范围?

无法访问结构 ifreq