2010-09-20 16 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這樣的傳輸層協議如果只能用它們使用完全相同的協議實現來與端點進行通信,那麼它將毫無意義。

重要的部分是確保兩個端點對協議/數據格式達成一致以確保您傳輸的內容。

相關問題