繁体   English   中英

如何使用SocketServer与Java中的客户端开始通信?

[英]How can I use a SocketServer to start a communication with a Client in Java?

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

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

到目前为止,还没有什么疏远。 问题是我将需要使用mi serverSocket来启动与客户端的对话。 这意味着我的serverSocket将需要向客户端发送一些信息,而无需客户端请求。

对于定义,我理解serverSockets是等待客户端打开与它们的连接的线程,一旦建立了此连接,应用程序之间的对话通常以客户端发出的一些请求(即ENQ字符)开始,以开始信息交换; 这是针对已实施某些协议以验证,发送和接收数据的情况。 否则,信息将由客户端发送,而无需进行大量验证和控制。

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

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

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

看一下DatagramSocket类。

问题是我将需要使用mi serverSocket来启动与客户端的对话。 这意味着我的serverSocket将需要向客户端发送一些信息,而无需客户端请求。

那甚至没有意义。 ServerSocket的整体思想是由客户端启动连接。 而且ServerSockets无法发送数据。

您需要整理您的要求:如前所述,这没有道理。

ServerSocket将等待来自其他设备的TCP连接。 建立连接后,对ServerSocket.accept()的调用将返回连接到远程系统的新Socket

建立连接后, 服务器客户端之间的区别是任意的。 没有要求谁必须首先发送。 这完全取决于您要实现的协议。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM