2009-11-24 79 views
0

在一個應用程序中,我需要使用Socket連接以及Java中的Http請求/響應,但我認爲它只處理HTTP請求/響應。Java,套接字連接和HTTP請求/響應

我正在考慮使用Java Networking(java.net.Socketjava.net.ServerSocket),在服務器上創建一個jar並運行它來處理套接字並使用Apache來處理HTTP請求,但我不知道如何將這兩個。

該應用程序將安裝在家用服務器上,所以即使服務器部件也在我的控制之下。任何想法如何實現這一點?

回答

1

這類問題(以及對Bhushan答案的進一步解釋)讓我回想起「爲什麼?」

爲什麼你認爲你需要混合基於套接字和HTTP通信?這味道很不好。

也許如果你詳細說明你的要求,我們可以拿出一個更清潔的設計。或者更好,回頭看看這些問題的解決方案。

+0

客戶端是Flashlite設備,並且設備上的swf用於創建跨域請求在服務器上需要一個策略文件,所以swf向服務器發出一個HTTP請求,我需要處理這個請求並提供策略文件。 一旦提供策略文件,我需要將設備通過套接字連接到服務器。 – 2009-11-24 20:33:56

+1

是這樣的:http://www.adobe.com/devnet/devices/articles/flashlite_sockets.html?它使用開源的Java NIO套接字服務器Tornado(http://sourceforge.net/projects/tornadonio/)。 – AndreaG 2009-11-25 08:46:10

+0

我再次...這裏的其他鏈接到OS套接字服務器和教程(對不起,意大利文):http://www.actionscript.it/forum/showthread.php?t = 825 – AndreaG 2009-11-25 09:07:29

1

你的意思是說你想在同一個JVM中接受http請求和服務器套接字請求,以便共享相同的Java對象?不知道爲什麼,但你可以輕鬆做到這一點。 Tomcat在那裏啓動Web應用程序並監聽http請求。你可以在Web應用程序中寫一個監聽器來監聽一個監聽器,它將在某個端口初始化一個服務器套接字。這種方式在相同的JVM中可以共享這些對象。

讓我知道你是否在找東西。

+0

我真的不想共享對象,只是提供一個文件,然後關閉HTTP上的連接,如果有人請求端口連接,我想做一個套接字連接並保持客戶端連接。 – 2009-11-24 06:55:52

+0

那麼你的意思是「如何整合這兩個」 – 2009-11-24 10:38:30

+0

通過集成我的意思是,如果我只寫一個客戶端 - 服務器網絡應用程序與套接字和ServerSocket,然後建立應用程序的服務器端我會得到一個罐子,這將就像一個獨立的過程。現在的問題是關於HTTP部分,我該如何實現它,以及如何將兩個應用程序合併到一個jar中(如果有必要)... – 2009-11-24 20:31:26

1

您可以在Servlet.init()方法中創建一個新線程。在這個線程中,您運行ServerSocket的偵聽循環。