java - 如何使用 SocketServer 与 Java 客户端进行通信?

标签 java sockets client-server socketserver

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

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

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

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

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

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

最佳答案

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

Give the DatagramSocket class a look.

关于java - 如何使用 SocketServer 与 Java 客户端进行通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8159097/

相关文章:

java - 更新spockframework 1.1后出现stockmap错误

linux - 什么是非监听套接字?

连接到公共(public) ip 地址的 Java 套接字

client-server - 向后兼容的服务接口(interface),无需更新 azure 服务结构中的旧客户端

java - 更改 Java 中传递的参数(通过 ref、value 调用)

java - 除非在 DAO 内部,否则交易无法进行

C套接字编程未输入端口

testing - 客户端-服务器集成测试 : mock or not?

ios - 在 Swift 中通过 TCP 发送消息

java - android 将包含负数的 byte[] 转换为字符串并通过 post 发送