2013-09-22 1 views
1

Я использую примеры, предоставленные Microsoft, чтобы узнать, как использовать TCP-серверы на C#. Для 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 (примеры приведены в нижней части страницы).Использование TCP вне локальной сети

До сих пор мне удалось подключить и отправить сообщения на другие ПК, подключенные к одному маршрутизатору. Теперь я хочу подключить его к ПК за пределами локальной сети. Как я могу это сделать ?

Я должен также упомянуть, что это путь, который я использую для подключения к компьютеру в локальной сети:

на þér стороне сервера:

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); 
+0

Нет никакой разницы. Вы просто используете адрес хоста, к которому хотите подключиться. Пока этот адрес маршрутизируется через сеть (интрасеть, интернет, не имеет значения), и порт открыт для хоста назначения, он должен работать. Ты пробовал? – David

+0

@ Давид, да, я сделал, и это не сработало. Я использовал свой Ip, как показано на http://whatismyipaddress.com/. Используя те же ПК в локальной сети, он работает, но за его пределами это не так. – TheQuestioner

+0

Все, что между клиентом и сервером может блокировать соединение. Если вы пытаетесь подключиться извне живого подключения к внутреннему соединению, вам нужно будет проверить, открыт ли порт на вашем маршрутизаторе и на кабеле/​​dsl/etc. аппаратное обеспечение. – David

ответ

0

Хотелось бы, чтобы простой комментарий дал вам эту информацию но я не могу из-за меня только недавно присоединиться к SO. Вы должны убедиться, что вы переправили порт (http://portforward.com/ поможет вам переправить порт), если вы не знаете, как использовать эту простую в использовании проверку портов: http://www.yougetsignal.com/tools/open-ports/.