【问题标题】:client/server chat program in C#/winforms IP address issueC#/winforms 中的客户端/服务器聊天程序 IP 地址问题
【发布时间】:2012-05-20 21:42:57
【问题描述】:

我正在尝试制作一个 winforms 客户端/服务器聊天应用程序。我已经有一个客户端和一个服务器,两者都工作正常,我可以登录,发送消息等。问题是它只有在我连接到我的本地 IP 时才有效。当我尝试使用我的外部 IP 运行程序时,我收到以下错误:

"The requested address is not valid in its context".

换句话说,我可以在自己的计算机上运行服务器,启动(例如)3 个客户端并让它们连接到正在运行的服务器。这基本上意味着我在自言自语。我想做的是在我的电脑上运行聊天服务器,让其他人运行客户端程序并通过互联网连接到服务器。

这是我输入外部 IP 时出错的部分:

public void StartListening()
    {

        // Get the IP of the first network device, however this can prove unreliable on certain configurations
        IPAddress ipaLocal = ipAddress;

        // Create the TCP listener object using the IP of the server and the specified port
        tlsClient = new TcpListener(ipaLocal, 50702);

        // Start the TCP listener and listen for connections
        tlsClient.Start(); <--- THINGS GO SOUTH HERE

        // The while loop will check for true in this before checking for connections
        ServRunning = true;

        // Start the new tread that hosts the listener
        thrListener = new Thread(KeepListening);
        thrListener.Start();
    }

我不确定我想要做的事情是否可行?我无法想象它是,但我有点不知道如何进行。我是网络编程的新手,因此将不胜感激。

亲切的问候, 简

【问题讨论】:

    标签: c# winforms ip-address tcpclient


    【解决方案1】:

    您的服务器应用程序需要在指定的本地安装的 NIC 上的指定端口上侦听传入连接。这就是为什么TcpListener 总是需要使用本地 IP 地址创建的原因:因为它只关心应该使用哪个 NIC(如果您安装了多个)。

    TcpListener 的 MSDN 页面也明确指出:

    TcpListener 构造函数 (IPAddress, Int32) 初始化 TcpListener 类的新实例,该实例侦听指定 本地 IP 地址和端口号上的传入连接尝试。

    外部 IP 地址与 TCP/IP 服务器完全无关。一路上您可以拥有许多路由器和网络设备,然后它们可以将传入的连接转发到您的机器。

    请确保您的防火墙和路由器配置正确,以允许指定端口上的传入连接。为此,请启动 TCP/IP 服务器以打开端口,然后使用 CanYouSeeMe 之类的服务查看是否可以从外部访问服务器。

    关于您的评论(这在某些配置上可能被证明是不可靠的),当您考虑它时,它显然是“不可靠的”:笔记本电脑可以很容易地拥有一个 IP 地址完全不同的以太网网络控制器一个 Wifi 网络适配器。您的服务器应用应允许用户选择要使用的 IP 地址,而不是选择它获得的第一个地址。

    【讨论】:

      【解决方案2】:

      简,

      我认为您的问题在于您的 IP 地址设置。这是网络连接问题。您需要外部 IP 地址,以便外部客户端可以联系您的 PC。您需要更高级的网络。您的 ISP 提供的 IP 地址用于家庭用途。您需要专门的公共 IP 地址,以便客户端可以在防火墙之外找到您。这是网络/ISP/外部 IP 问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-05-17
        • 1970-01-01
        • 2020-03-25
        • 2011-06-18
        • 2014-04-18
        • 1970-01-01
        相关资源
        最近更新 更多