【问题标题】:c# tcp not working outside intranet时间:2019-05-10 标签:c#tcp not working outside Intranet
【发布时间】:2015-12-24 23:39:40
【问题描述】:

服务器:

socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        socket.Bind(new IPEndPoint(IPAddress.Parse("90.181.x.xxx"), 23466));

        socket.Listen(1);
        Socket accepteddata = socket.Accept();
        data = new byte[accepteddata.SendBufferSize]; 6
        int j = accepteddata.Receive(data);
        byte[] adata = new byte[j];
        for (int i = 0; i < j; i++)
            adata[i] = data[i];
        string dat = Encoding.Default.GetString(adata);
        MessageBox.Show(dat);

和客户:

Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        try
        {
            s.Connect(IPAddress.Parse("90.181.x.xxx"), 23466);
            string q = "It work";
            byte[] data = Encoding.Default.GetBytes(q);
            s.Send(data);
        }
        catch(Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }

问题是当我的朋友连接到它时,他得到了错误。是的,我已经转发了端口。我已经将内部/外部端口开始/结束设置为 23466,并将 IP 地址设置为 192.168.1.1

【问题讨论】:

  • 你服务器的 IP 很可能不是 192.168.1.1,这通常是你的路由器地址。在命令提示符中键入ipconfig /all 以查找您机器的IP 地址。我也不太确定您是否可以绑定到公共 IP 地址。请详细说明您的网络配置。
  • 如果我输入 ipconfig / all 我得到 192.168.1.1 作为我的 ip 地址。我的公共 ip 是 90.181.0.0 从whatismypublicip.com 知道。
  • 我建议您使用第三个程序分别测试您的服务器和客户端。 HW 集团的 Hercules 做得很好。将其与 Sysinternals TcpView 结合使用。

标签: c# tcp ip


【解决方案1】:

这里的这一行:

socket.Bind(new IPEndPoint(IPAddress.Parse("90.181.x.xxx"), 23466));

应该是:

socket.Bind(new IPEndPoint(IPAddress.Any, 23466));

当然,您可以绑定到特定的 IP 地址,但不应对其进行硬编码。 “IPAddress.Any”应该将套接字绑定到本地机器上的所有地址。您遇到的问题是您无法绑定到另一台机器(路由器)的地址。

另外,这段代码还能编译吗? “6”是做什么的?

data = new byte[accepteddata.SendBufferSize]; 6

无论如何,代码很奇怪。运行服务器后,尝试打开命令提示符并键入“telnet localhost 23466”,看看它是否打开了连接。你的朋友还是你,没关系也可以“telnet 90.181.x.x 23466”

确保在使用完套接字后关闭它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-15
    • 2020-10-01
    • 2015-06-14
    • 2011-07-08
    • 2012-02-03
    • 2017-04-15
    相关资源
    最近更新 更多