java - servlet 可以打开套接字与 native 代码对话吗?

标签 java sockets servlets

我有一个与硬件对话的 C API,我想最终从浏览器调用该 API。考虑到一些 C++ servlet 库太复杂了,就像 JNI 一样,我想我可以这样证明这个概念:

Java servlet 通过 HTTP 获取简单的字符串消息。 servlet 打开套接字以通过 UDP 传递数据。 运行的 C 进程打开一个套接字并等待消息。 C 进程接收消息,进行调用,并通过 UDP 发送回简单的字符串消息。 Servlet 将响应消息传递回浏览器。

简而言之,servlet 可以打开一个套接字与 native (winsock) 代码对话吗?

最佳答案

是的,这将是一个很好的解决方案。

然而,您需要仔细考虑的一件事是当 2 个 servlet 建立连接时需要如何处理并发请求。如果是库/机器,使用一个简单的套接字可能会很有用,它在建立连接后不接受其他连接。

然后,在 java 中,您可以序列化对 librarysocket 的访问,例如使用 BlockingQueue,以便您拥有定义良好的并发访问行为。

这将避免虚假的不可重复的问题。

关于java - servlet 可以打开套接字与 native 代码对话吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3753784/

相关文章:

java - XMLEntityScanner.peekChar 从 HttpRequest 读取 XML 时出现 ArrayIndexOutOfBoundsException

java - 如何将类添加到 Web 应用程序的应用程序范围

Java 线程 - start() 和 run() - 在控制台中丢失行

linux - 从 linux 中的特定 ip 地址连接

java - 小服务程序 3 : Async - cant PUSH partial response

Java 套接字 : multiple client threads on same port on same machine?

linux - 使用 INADDR_ANY 更改 udp 服务器绑定(bind)的默认源 IP

java - 错误 : The method add(java. lang.String) 未定义类型 java.lang.Object

java - 尝试从安全站点生成 Web 服务客户端时出现奇怪的证书错误

java - 两个数组的笛卡尔积