我有一个与硬件对话的 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/