首页 > 解决方案 > 多线程写入套接字输出流时丢失消息

问题描述

我试图在同一个 java 套接字输出流中写入至少 5 条消息,来自两个不同的线程,几乎是瞬间的。

但为了简化,假设我有两个线程写入同一个套接字输出流。当我以超过 1 秒的间隔编写它们时,我会在另一端收到两条消息,但如果我将它们发送到低于 1 秒的间隔,第一个似乎被覆盖(我猜),只有第二个得到另一个结尾。

我的写入是在同步块内执行的:

  this.sock =new Socket(InetAddress.getByName(hstName), hstPort);
  this.os = this.sock.getOutputStream();  


  synchronized(this.os) {
   this.os.write(buffer, ofset, blen);
   this.os.flush();
  }

任何人都知道为什么我的第一条消息被删除,这是否应该,以及如何解决这个问题。请注意,我无法更改负责接收消息的代码。我拥有仅发送消息的代码。

提前致谢

标签: javamultithreadingsockets

解决方案


推荐阅读