0

首先,我对Socket通信的使用还很陌生,所以还有一些我不知道的东西。我了解 Java 中 Socket 通信的基础知识,所以我在这里寻求指导。

现在,关于我的问题,我需要与远程应用程序建立服务器套接字通信。在我的应用程序中,我将运行另一个应用程序上的客户端将与我通信的 serverSocket。为这种通信实现的部分协议是这个套接字必须一直打开,这为我们提供了两个应用程序之间的一个永久通信通道。

到目前为止没有什么很奇怪的。问题是我将需要使用 mi serverSocket 来开始与客户端的对话。这意味着我的 serverSocket 需要在没有客户端请求的情况下向客户端发送一些信息。

对于定义,我理解 serverSockets 是等待客户端打开与它们的连接的线程,一旦建立此连接,应用程序之间的对话通常以来自客户端的一些请求(即 ENQ 字符)开始,以开始信息交换;这是针对实施了一些协议来验证、发送和接收数据的情况。否则,信息是由客户端发送的,没有经过很好的验证和控制。

在正常情况下,如果 mi 应用程序可以使用 Client 与远程应用程序上的 serverSocket 通信,我的问题将以更自然的方式处理。但这种情况并非如此。远程应用不能有serverSocket,只能有Client(别问我为什么,这是一个业务伙伴的应用,不是我自己的,暂时他们不愿意改变他们的通信方案)。

考虑到这一点,我的问题是:当我的应用程序中的进程需要时,有一种方法可以使用我正在运行和等待的 serverSocket 将一些信息从我的应用程序发送到远程客户端?我如何从我的应用程序中的第三个 bean 调用 serverSocket 中的打开套接字来写入它?

4

3 回答 3

1

听起来您正在寻找的是UDP套接字。

看看 DatagramSocket 类。

于 2011-11-16T21:42:24.493 回答
0

ServerSocket将等待来自其他东西的 TCP 连接。一旦建立连接,调用ServerSocket.accept()将返回一个Socket连接到远程系统的新的。

一旦建立连接,服务器客户端之间的区别是任意的。没有要求谁必须先传输。这一切都取决于您正在实施的协议。

于 2011-11-17T00:21:32.717 回答
0

问题是我将需要使用 mi serverSocket 来开始与客户端的对话。这意味着我的 serverSocket 需要在没有客户端请求的情况下向客户端发送一些信息。

这甚至没有意义。a 的整个想法ServerSocket是客户端启动连接。并且ServerSockets不能发送数据。

您需要理清您的要求:如上所述,它没有意义。

于 2011-11-16T23:11:55.913 回答