2012-09-21 116 views
1

我已經構建了一個windows服務,它通過tcpClient使用IP和端口號連接到本地網絡設備。網絡設備流出數據,我收到一個讀取。對於多個設置,MONTHS一直在工作(總是1臺機器 - > 1個網絡設備)。網絡設備可以被ping但沒有tcp連接

現在幾乎所有的連接嘗試都開始失敗! 我們可以通過命令提示符來ping通設備。 在膩子中,沒有數據傳輸。 使用netstat我沒有看到列出的任何遠程地址。

在我的服務有以下錯誤日誌消息:

Exception by Establishing TCP/IP [email protected] System.Net.Sockets.SocketException (0x80004005): A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond XXX.XXX.XXX.XX:XXXX (translated into english ;D) 
    at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress) 
    at System.Net.Sockets.Socket.Connect(EndPoint remoteEP) 
    at System.Net.Sockets.TcpClient.Connect(IPEndPoint remoteEP) 
    at System.Net.Sockets.TcpClient.Connect(IPAddress address, Int32 port) 

是網絡相關的?或者它與Windows更新或任何東西?

我上到最近的工作,因爲響應ping操作,但不能連接設備的代碼

public void readDevice() 
     { 

      TcpClient Client = new TcpClient(); 
      System.Net.IPAddress ip = System.Net.IPAddress.Parse(ConfigurationManager.AppSettings["IP"]); 

       /* 
       * Establishing TCP/IP Connection 
       */ 
       try 
       { 
        // IP and Port number 
        log.Debug("Try Client.Connect:" + ip); 
        Client.Connect(ip, 5000); 

       } 
       catch (Exception ex) 
       { 
        /* Handle the socket exception.... */ 
        //this error is thrown 
        log.Debug("Exception by Establishing TCP/IP [email protected] "+ ex); 
       } 

       NetworkStream MessageStream = Client.GetStream(); 

     //Magic be here 

     } 

我很堅持。 任何幫助極大讚賞

+1

乍一看這聽起來像是一個防火牆問題,你可以用telnet連接到端口嗎? –

+0

儘管「ping」和TCP連接最終都使用IP協議,但它們的處理方式通常不同。防火牆讓ping消息通過但阻止其他類型的流量並不罕見。 –

+0

你最近更改過任何IP地址,比如默認網關..?你的網絡是什麼樣的拓撲結構? –

回答

0

我不知道這會有多大的幫助,但它聽起來像一個網絡問題。如果它剛剛停止工作,沒有任何改變代碼明智,我會開始在那裏調查。

我有一個這樣的問題與我的服務器,並且問題最終是因爲端口轉發表搞砸了,所以我試圖連接到錯誤的機器。我只是修復了轉發,並blam-o!一切都很好。

我希望你的問題一樣容易解決。

+0

我真的不知道。我似乎無法打開這個端口。另一方面:這些都是通過局域網連接的本地網絡設備和標準的家庭路由器 - 是否只需要在局域網內進行通信就需要在路由器中爲它們打開端口? –

+0

@Timo Jak:是的,有時候您必須確保端口上的數據會傳送到正確的機器上,即使是在您的LAN上。您可以抓取wireshark或其他端口嗅探器的副本,並查看它是否在目標機器上打開。這可能會產生一個哈哈!時刻。 –

相關問題