【问题标题】:Client-Server connection does not work through internet客户端-服务器连接无法通过互联网工作
【发布时间】:2016-04-12 22:46:03
【问题描述】:

我正在尝试使用标准 TcpListener/TcpClient 类制作自己的简单客户端-服务器应用程序。首先,我不得不说我是网络编程的初学者。所以,我做到了,但它只能在本地工作(两台计算机都在同一个网络中,我使用 ipconfig 中的 ipv4 地址(它是本地的吗?)来创建 TcpListener 并使用相同的地址从客户端应用程序连接到 TcpClient。

如何使它与我的实际 IP 地址一起使用(由提供商提供,whatismyip.com 显示给我)?我应该在服务器上使用 127.0.0.1 并在客户端上使用我的外部 IP 吗?

感谢您的耐心。

【问题讨论】:

    标签: c# client-server tcplistener


    【解决方案1】:

    好的,你需要做两件事,首先你需要你的服务器允许来自任何 ip 的连接。其次,您需要您的客户端连接到服务器的 ip 和端口。 不要忘记端口转发您用于服务器的端口!

    首先是服务器

    private static Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
    
    void init()
    {
        serverSocket.Bind(new IPEndPoint(IPAddress.Any, PORTHERE));
        serverSocket.Listen(1);
        serverSocket.BeginAccept(new AsyncCallback(CallBack), null);
    }
    

    然后你需要在客户端连接它

    private Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
    
    void init()
    {
        while (!clientSocket.Connected)
        {
            try
            {
                IPAddress ipAd = IPAddress.Parse(IPHERE);
                clientSocket.Connect(ipAd, PORTHERE);
            }
            catch (SocketException e)
            {
                Console.WriteLine(e.Message);
            }
    }
    

    这里还有一个来自我的库的简单客户端示例:https://github.com/TheRealNOIG/TylerGregorcyksLibrary/blob/master/TylerGregorcyksLibrary/Main/SimpleClient.cs

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-05
      • 2022-01-05
      相关资源
      最近更新 更多