2012-02-11 64 views
1

我正在嘗試編寫一個程序,該程序將「偵聽」通過TCP/IP在端口上運行的應用程序。套接字和端口混淆

當我將瀏覽器指向localhost:30003時,我從應用程序的輸出流打印到屏幕上。這似乎是瀏覽器成功「監聽」端口。

發生了什麼事嗎?我的瀏覽器是在輪詢應用程序還是應用程序推送瀏覽器提取的tcp數據?

我不確定是否獲取這些數據我需要創建一個客戶端或服務器實例。

+0

這是您需要的客戶端實例(在端口30003上連接)。 – 2012-02-11 17:48:25

+0

刪除了[[java]'標籤,它並不真正相關。 – skaffman 2012-02-11 17:51:24

回答

2

找出實際情況的最好方法之一是啓動Wireshark並遵循tcp流。

http://www.wireshark.org/

或者,你可以使用類似TCP問,如果你只關心文本,並沒有組網的詳細信息。

http://ws.apache.org/commons/tcpmon/download.cgi

基於對你的問題的信息有限,最有可能的是,瀏覽器發出的TCP連接,您發回一個格式錯誤的響應。瀏覽器假設你是一個破碎的網站,最好進行調整。如果你沒有發送正確的http頭,它不知道還有什麼要做,所以可能只是把文本放在屏幕上。

知道的細節

最好的辦法是使用Wireshark或者TCPMON

0

將瀏覽器指向到localhost:30003將導致它的開放對本地主機連接到端口30003和發送字符串「GET /」請求從什麼是認爲是一個Web主機的網頁。無論您的應用程序在接收到連接時發送的文本是由Web瀏覽器簡單顯示,就好像它已經接收到Web服務器上的文本文件的內容一樣。

0

當您在瀏覽器中編寫「localhost:30003」時,會建立一個連接以偵聽計算機上的端口30003。 URL中的前綴(默認HTTP)決定服務器和客戶端使用的協議,在這種情況下,瀏覽器是連接到您的PC(服務器)的客戶端。

如果您想對程序執行相同的操作,可以使用相同的端口30003與本地主機建立套接字連接。然後,您的程序將成爲客戶端。根據程序(你沒有提到任何關於),你可能有更多的協議選項,並需要在你的程序中處理協議。

另一種方法是使用telnet連接到您的程序,但它取決於可用的協議。