【问题标题】:My Network code is just working in my local network我的网络代码只是在我的本地网络中工作
【发布时间】:2021-08-24 16:33:27
【问题描述】:

我正在尝试对 UDP 服务器和客户端进行编程。我尝试了代码,一切正常,但是当我尝试做同样的事情时,我的 VPS 作为服务器,我的计算机作为客户端,它不起作用。我在 upd 和 tcp 上打开了所有相关端口,但它仍然无法正常工作。谁能帮帮我?

Server:
public partial class Network
    {
        private UdpClient Socket { get; set; }
        private IPEndPoint EpFrom = new IPEndPoint(IPAddress.Any, 0);

        public void Bind(string address, int port)
        {
            this.Socket = new UdpClient(new IPEndPoint(IPAddress.Parse(address), port));
            Receive();
        }

        public void Send(string text)
        {
            byte[] data = Encoding.ASCII.GetBytes(text);
            Socket.Send(data, data.Length);
        }

        private void Receive()
        {
            Console.WriteLine("Hearing on localhost 11111");
            byte[] data = Socket.Receive(ref EpFrom);
            Console.WriteLine(Encoding.ASCII.GetString(data));
        }
    }


Call:
static void Main(string[] args)
        {
            // Server.Start();
            Network server = new Network();
            server.Bind("127.0.0.1", 11111);
        }

Client:
public class Network
    {
        private UdpClient Socket { get; set; }
        private IPEndPoint EpFrom = new IPEndPoint(IPAddress.Any, 0);

        public void Server(string address, int port)
        {
            this.Socket = new UdpClient(new IPEndPoint(IPAddress.Parse(address), port));
            Receive();
        }

        public void Client(string address, int port)
        {
            this.Socket = new UdpClient(port);
            this.Socket.Connect(new IPEndPoint(IPAddress.Parse(address), port));
        }

        public void Send(string text)
        {
            byte[] data = Encoding.ASCII.GetBytes(text);
            Socket.Send(data, data.Length);
            Socket.Close();
        }

        private void Receive()
        {
            Console.WriteLine("Hearing on localhost 11111");
            byte[] data = Socket.Receive(ref EpFrom);
            Console.WriteLine(Encoding.ASCII.GetString(data));
        }
    }

Call:
static void Main(string[] args)
        {
            Network client = new Network();
            client.Client("ADDRESS", 11111);
            client.Send("test");
        }

似乎连接没有从客户端断开,因为我的 vps 没有显示我和他之间的任何活动。 但不要相信。如果您有任何问题,请提出。

【问题讨论】:

  • 您确定您提交的代码是实际代码吗?我看到server.Bind("127.0.0.1", 11111)client.Client("ADDRESS", 11111):第一个明确声明服务器将只侦听本地请求(不允许网络),我几乎看不到第二个如何工作(“地址”代表什么?)。跨度>
  • 许多 VPS 提供商会阻止所有端口上的外部流量,但选择的服务(如 SSH 或 HTTP/HTTPS)除外。有些甚至默认阻止这些。您可能需要明确允许 VPS 上指定端口上的连接。
  • "ADRESS" 只是一个占位符,因为我不希望每个人都能看到 IP。
  • 致帕特里克:这可能是。你能告诉我如何启用这个端口吗?我已经在 ufw 中启用了它。

标签: c# server udp client


【解决方案1】:

我在我的 Windows 电脑上测试了代码。实习生它工作得很好,但外部,它没有。应该不是我的vps的问题。

【讨论】:

    猜你喜欢
    • 2013-09-02
    • 2014-06-24
    • 1970-01-01
    • 2015-01-02
    • 1970-01-01
    • 2017-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多