2010-09-20 39 views
2

我有一个C API与硬件对话,我想最终从浏览器调用该API。思考一些到C++ servlet库的过于复杂,因为是JNI,我想我可以证明这样的概念:servlet可以打开一个套接字来与本地代码交谈吗?

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

总之,一个servlet可以打开一个套接字来与native(winsock)代码交谈吗?

回答

0

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

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

在java中,您可以使用BlockingQueue序列化对librarysocket的访问,以便您有一个很好定义的并发访问行为。

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

0

没理由不。所有你需要做的就是建立TCP/UDP连接,并让你的C++服务器来响应。

0

一个插座是一个插座。像UDP这样的传输层协议如果只能用它们使用完全相同的协议实现来与端点进行通信,那么它将毫无意义。

重要的部分是确保两个端点对协议/数据格式达成一致以确保您传输的内容。

相关问题