2011-02-10 41 views
0

我需要从我的Java应用程序监视设备状态(例如设备ip = 192.168.0.22和端口17000,监视器意味着我发送每1秒的请求并获取响应等数据)。我需要与发送给该设备的另一条消息并接收答案(在相同的IP和相同的端口上)并行。我创建了socket = new Socket(ipAddress,port)。如何实现我没有碰到的问题(我需要:我先发送,我从第一个得到响应,我发送第二个从第二个得到响应,我发送第三个得到第三个响应,等等)?Java socket并行发送

+0

它是UDP还是TCP? – Guillaume 2011-02-10 10:04:12

回答

1

除非我失去了一些东西,

  • 你可以做每一个单独的线程,
  • 或者您也可以将请求发送到所有三个插座,等待所有三个答复。
  • 或者你可以设计你的服务器一次有三个未决的请求。 (它可能已正确工作)发送三个请求到一个连接并等待三个回复。

最后一个可能是最有效的解决方案。

1

如果您的工作是关心订单,所以您必须逐一发送请求数据,我的理解是,您的意思是,当您将数据同时发送到设备时,回复你? 不用担心,因为套接字必须缓冲,一个用于发送,另一个用于接收。

1

您可以定义一个请求类型标识符。然后在实现的SocketServer端,可以解析标识符并将请求传递给用于处理该类请求的新线程。因此,在你的情况下,你会定义3个不同的处理程序,并且每种类型都会得到一个请求,您可以选择使用哪个处理程序来处理请求。每个请求将使用相同的Socket进行。

不过,从你的最后一句话:

我需要:我先发,我从第一次得到响应 ,我送第二我从第二 响应,我送第三个我 得到第三响应等等

这听起来不像并行请求。相反,它听起来像你想要一个接一个地运行它们,即第二个请求取决于第一个请求的响应?如果是这种情况,那么你只需使用相同的套接字(不要为每个请求创建一个新套接字)。然后请求代码中的逻辑将仅仅是发送请求1,等待响应1,然后发送请求2等等。