【问题标题】:Public TCP server with C# hosted on my computer在我的计算机上托管 C# 的公共 TCP 服务器
【发布时间】:2020-07-26 02:56:24
【问题描述】:

我正在尝试在我的计算机上运行游戏 TCP/UDP 服务器。它在本地网络中运行良好,但是当我尝试使用我的公共 IP 运行服务器时,它就无法正常工作。我尝试禁用路由器中的防火墙,为端口 17000 设置端口转发,并向我的计算机添加防火墙规则。我的电脑也绑定了IP。

我使用 Wireshark 检查了客户端调用,发现客户端(Unity 游戏)正在向我的 IP 发送数据,但它尝试发送的每个 TCP 数据包都出现 TCP 重传错误。

有一些来自服务器和客户端的代码。

服务器 IP 设置为 192.168.0.*:17000

客户端正在使用端口 17000 连接到我的 IP

服务器:

public static void Start(byte _maxPlayers)
    {
        MaxPlayers = _maxPlayers;
        Port = 17000;

        Console.WriteLine("Starting server..");
        InitializeServerData();

        tcpListener = new TcpListener(GetLocalIPAddress(), Port);
        tcpListener.Start();
        tcpListener.BeginAcceptTcpClient(new AsyncCallback(TCPConnectCallback), null);

        udpListener = new UdpClient(Port, GetLocalIPAddress().AddressFamily);
        udpListener.BeginReceive(UDPReceiveCallback, null);

        Console.WriteLine($"Server started on {tcpListener.LocalEndpoint}.");
    }

客户:

public void Connect()
    {
        socket = new TcpClient
        {
            ReceiveBufferSize = dataBufferSize,
            SendBufferSize = dataBufferSize
        };

        receiveBuffer = new byte[dataBufferSize];
        socket.BeginConnect(instance.ip, instance.port, ConnectCallback, socket);
    }

    private void ConnectCallback(IAsyncResult _result)
    {
        socket.EndConnect(_result);

        if (!socket.Connected)
            return;

        stream = socket.GetStream();

        receivedData = new Packet();

        stream.BeginRead(receiveBuffer, 0, dataBufferSize, ReceiveCallback, null);
    }

【问题讨论】:

  • 这很可能是因为监听套接字只绑定在本地网络接口上。试试new TcpListener(IPAddress.Any, Port);
  • @Asti 不起作用,我想我需要将其设置为静态地址,因为路由器正在将其端口转发到该地址,对吧?
  • Any 应该适用于所有网络地址。您是否使用第三方工具检查过是否可以从外部访问 TCP 服务器?
  • 好吧,我检查了那个端口,它被“过滤”了。所以我猜它仍然是关闭的,但我不知道为什么,因为路由器应该转发那个端口。

标签: c# tcp server udp


【解决方案1】:

所以我发现,我设置了两台路由器,因为我只在一台路由器上转发端口 17000,所以它不起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-15
    • 2021-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-03
    相关资源
    最近更新 更多