2010-08-01 138 views
0

我寫了使用一個簡單的Web服務器HttpListener類(.NET 2.0)HTTP偵聽端口8080或其他端口不能正常工作(僅適用於80端口)

它似乎不會對其他端口的工作然後80.

當我嗅到傳輸到我的服務器時,我可以看到端口8080上的Syn包到達服務器,但沒有Syn/Ack響應,雖然當我起訴netstat -ai可以看到服務器正在收聽端口8080(我確認我的應用是收聽的)

HttpListener server = new HttpListener() 
server.Prefixes.Add("http://192.168.4.133:8080/"); 
server.Start(); 
_log.Write("Waiting for a connection... "); 
HttpListenerContext context = server.GetContext(); 
HttpListenerRequest request = context.Request; 
HttpListenerResponse response = context.Response; 
_log.Write("Got request for " + request.RawUrl); 

上面的代碼沒有收到任何上下文(卡在行server.GetContext()) 如果我將前綴更改爲「http://192.168.4.133/」 上述代碼完美工作。

當我在端口80上測試它時,我正在查殺IIS服務,並確保我的應用程序是收聽相關端口的應用程序。

我在XP上運行這一點,所以我不認爲這是安全問題....但你永遠不知道.. 我已閱讀有關httpcfg工具,但沒有真正理解...

在偵聽端口80到偵聽其他端口之間是否存在一些繼續不同的東西? 8080甚至更好的另一個隨機用戶端口? 謝謝, Itay

回答

2

我建議檢查你的防火牆,如果你沒有找到任何東西 - 嘗試在8080上運行另一臺服務器,並檢查它是否正常工作(所以你知道它是端口,而不是服務器)。

+0

關於FW,我不明白 - 如果我可以嗅到它?它怎麼可能被FW阻擋?或者FW在嗅探器後坐着? – 2010-08-01 12:13:05

+0

我猜嗅探器在FW之前​​。 它現在是固定的! :)它的工作。 – 2010-08-01 12:55:06

2

檢查您的防火牆是打開還是關閉,如果打開,是否禁止此端口訪問。 您可以暫時將其轉爲進行測試以確保。

邊注:沒有必要被追捕和殺害IIS進程,乾脆停止IIS的Windows服務(運行命令「SERVICES.MSC」見列表)

+0

關於IIS,這是我的。我停止了IISAdmin服務。 – 2010-08-01 12:12:14

+0

這是FW,謝謝。 – 2010-08-01 12:54:46