java - 从两个单独的类读取 Java 套接字,最新的线程干扰旧线程

标签 java sockets network-programming

我敢肯定这已经是您能得到的头衔了,但让我试着解释一下:我正在尝试创建一个非常简单的在线多人游戏,并附带一个聊天室。聊天室部分和游戏部分都需要查看来自服务器的数据,以便他们可以处理为他们准备的数据。

套接字中读取的两个类是ChatClientGameboard。它们都实现了 Runnable 并在不同的线程上运行。

在每个类的 run() 函数中,我有以下代码:

try {       
    out = new PrintWriter(socket.getOutputStream(), true);
    in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

     while (true) {

            String line = in.readLine();
            if(line != null) { ...

当只有其中一个存在时,这工作得很好。第二个另一个线程仅启动第二个线程实际上获取套接字的任何输入流,但我不确定为什么。根据我对代码的理解,两个 BufferedReader 应该是完全独立的,这意味着我不确定它们为什么会相互干扰。我能得到一些帮助吗?

最佳答案

错误的方法:您不使用两个线程从同一个套接字读取输入。如果这可能的话,我会感到很惊讶。

您有一个线程读取该套接字,并且该线程决定将数据发送到何处(例如:决定一条线应该去往哪个特定的接收器);或者它只是复制数据并将其发送到所有已知的接收器。

关于java - 从两个单独的类读取 Java 套接字,最新的线程干扰旧线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43243641/

相关文章:

Java 防止在类外调用私有(private)或 protected 方法

java - 导出可运行的 JAR 文件

sockets - 如何将 chrome web 扩展与本地主机服务器连接?

sockets - epoll_data结构存在缺陷,是否需要改进?

linux - 跟踪特定的 IP 和端口

Java重载构造函数强制int参数

java - ArrayList for 循环迭代器导致无限循环

java - 单个页面上的 Websocket 数

python - 将数组转换为字符串格式 - Python

python - 如何在连接数受限的情况下快速抓取网页