0

首先对我的英语感到抱歉。我的问题是我在压机上有电子电路。该电路将数据发送到我的服务器没有问题。收到数据后,我需要向电路发送命令。在局域网中它的工作就像一个魅力。但是在局域网之外,并没有以某种方式收到我的命令。知道如何将 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());
                }
            }
        }
}
4

1 回答 1

1

不能从远程网络直接访问位于 NAT 路由器后面的计算机。需要在您的防火墙/路由器上设置规则以将此流量路由到远程计算机。有关明确指示,请参阅您的 WAN/LAN 管理员。如果您没有,您可以尝试在Server Fault上询问有关您的网络的更多信息。

于 2012-06-03T01:17:36.777 回答