2

我正在使用 Microsoft 提供的示例来学习如何在 C# 中使用 TCP 服务器。对于 TCPListener,我使用这个http://msdn.microsoft.com/en-us/library/system.net.sockets.tcplistener.aspx,对于 TCPCLient,我使用这个http://msdn.microsoft.com/en-us /library/system.net.sockets.tcpclient.aspx(示例在页面底部)。

到目前为止,我已经设法连接并发送消息到连接到同一路由器的其他 PC。我现在想要的是将它连接到我的 LAN 网络之外的 PC。我怎样才能做到这一点 ?

我还应该提到,这是我用来连接 LAN 中的 PC 的方式:

在服务器端:

    public string LocalIPAddress()
    {
        IPHostEntry host;
        string localIP = "";
        host = Dns.GetHostEntry(Dns.GetHostName());
        foreach (IPAddress ip in host.AddressList)
        {
            if (ip.AddressFamily == AddressFamily.InterNetwork)
            {
                localIP = ip.ToString();
                break;
            }
        }
        return localIP;
    }

    private void Form1_Load(object sender, EventArgs e)
    {


        TcpListener server = null;
        try
        {
            // Set the TcpListener on port 13000.
            Int32 port = 13000;
            String localAddrString = LocalIPAddress();
            Console.WriteLine(localAddrString);

            IPAddress localAddr = IPAddress.Parse(localAddrString);

// TcpListener server = new TcpListener(port);
            server = new TcpListener(localAddr, port);

            // Start listening for client requests.
            server.Start();

} }

在客户端:

            Int32 port = 13000;

            String server = "192.168.X.X"; // here I manually introduce the IP provided     by the server in the console
            TcpClient client = new TcpClient(server, port);
4

1 回答 1

0

我希望我可以用一个简单的评论来给你这个信息,但我不能因为我最近才加入 SO。你应该确保你有端口转发(http://portforward.com/将帮助你端口转发),如果你不知道如何使用这个易于使用的端口检查器:http://www.yougetsignal .com/tools/open-ports/

于 2013-09-22T21:38:17.080 回答