C#聊天应用程序仅在LAN上工作

时间:2015-01-25 15:26:04

标签: c# udp chat udpclient

我使用UDP协议在C#中创建了一个聊天应用程序。我不想使用TCP。但它只能在我自己的网络/ wifi中工作。我为自己和我的朋友,或者可能是其他下载它的人做了这个,但它不起作用。我需要前进或其他什么吗?移植前进是没有意义的,因为我下载的所有其他程序都不要求我提前告诉:P。我怎样才能让它长途跋涉?这是我使用的代码:

接收数据:

    static UdpClient UdpReciever = new UdpClient(PORT);
    static byte[] data = new byte[512];

    static void Main(string[] args)
    {
        while (true)
        {
            IPEndPoint EP = new IPEndPoint(IPAddress.Any, PORT);
            data = UdpReciever.Receive(ref EP);
            Otherclass oc = new Parser();
            Otherclass.Parse(data);

        }
    }

    public class Otherclass
    {
        public static void Parse(Byte[] data)
        {
            string received = Encoding.ASCII.GetString(data);
            Console.WriteLine(received);
        }
    }

使用此代码发送数据:

            IPEndPoint ep = new IPEndPoint(IPAddress.Parse(this.Ip), port);
            Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);

            client.SendTo(ex.packetdata, ep);

2 个答案:

答案 0 :(得分:1)

您无法将数据发送到互联网上的任何计算机上。您的客户端需要将公用IP和转发端口用于其计算机。如果他们没有公共IP,那么你需要一台服务器来处理消息。

答案 1 :(得分:0)

有两件事需要注意:

  1. 您创建的EP端点具有本地网络的IP地址,无法从外部访问。打印出来进行验证。

  2. UDP数据包不一定完全按照发送方式接收。在本地网络上,您可能没有发现差异,但在更大的网络上进行一些测试。仔细查看UDP协议提供的保证。如果你试图纠正错误,你很快就会重新发明TCP,所以你最好也可以使用TCP。