2012-06-02 50 views
0

首先是關於我的英語。我的問題是我在印刷機上有電子線路。這個電路發送數據到我的服務器沒有問題。收到數據後,我需要發送命令給電路。在LAN中,它的工作就像一個魅力。但是,在外線電路沒有收到我的命令莫名其妙。任何想法如何我可以發送到udp嘲笑機器後面的NAT?我的代碼是低調的,有任何幫助。Udp數據包在機器後面nat

private void ReceiveMessage() 
     { 
      while (true) 
      { 
       try 
       { 
        var remoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0); 
        var content = _udpClient.Receive(ref remoteIpEndPoint); 
        if (content.Length > 0) 
        { 
         var message = Encoding.ASCII.GetString(content); 
         var smsg = message.Split('|'); 
         var pin1 = int.Parse(smsg[13]); 
         var pin2 = int.Parse(smsg[14]); 

         var isChanged = CheckChanges(smsg[1]); 
         if (isChanged == 1) 
         { 

          **var recvpt = new IPEndPoint(remoteIpEndPoint.Address, remoteIpEndPoint.Port); 
          var client = new UdpClient(); 
          var cmd1 = "CP1S" + _pin1Time + "F"; 
          var cmd2 = "CP2S" + _pin2Time + "F"; 
          var senddata1 = Encoding.UTF8.GetBytes(cmd1); 
          var senddata2 = Encoding.UTF8.GetBytes(cmd2); 
          client.Send(senddata1, senddata1.Length, recvpt); 
          client.Send(senddata2, senddata2.Length, recvpt); 
          client.Close();** 
          // UpdateChanges(smsg[1]); 
         } 
       } 
       catch (Exception ex) 
       { 

        MessageBox.Show(ex.ToStrin<wbr ></wbr>g()); 
       } 
      } 
     } 
} 

回答

1

NAT路由器後面的計算機不能直接從遠程網絡訪問。您需要在您的防火牆/路由器上設置規則,以將此流量路由到遠程計算機。對於明確的方向,請參閱WAN/LAN管理員。如果你沒有一個,你可以試着在Server Fault上詢問有關你的網絡的更多信息。