在局域网外使用TCP

时间:2013-09-22 17:21:03

标签: c# sockets tcp tcpclient serversocket

我正在使用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。我怎么能这样做?

我还应该提一下,这是我用来连接局域网中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);

1 个答案:

答案 0 :(得分:0)

我希望我能用一个简单的评论来提供这些信息,但我不能因为我最近才加入SO。如果您不知道如何使用这个易于使用的端口检查程序,则应确保转发端口(http://portforward.com/将帮助您向前移动):http://www.yougetsignal.com/tools/open-ports/