Отправка / получение байтов с использованием TCP-сокетов через Интернет (возможно, с использованием статического IP) - PullRequest
2 голосов
/ 10 октября 2011

Я успешно отправил / получил данные через TCP-сокеты по локальной сети, но я хочу сделать то же самое через Интернет Я спросил некоторых из моих друзей и получил идею использовать статический IP. Мне было интересно, как я могу использовать этот статический IP? Я имею в виду, мне нужно настроить параметры порта на хосте или что?

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

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;

class MainClass
{
   public static void Main()
   {
      IPEndPoint ip = new IPEndPoint(IPAddress.Any,9999);
      Socket socket = new Socket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp);

      socket.Bind(ip);
      socket.Listen(10);
      Console.WriteLine("Waiting for a client...");
      Socket client = socket.Accept();
      IPEndPoint clientep =(IPEndPoint)client.RemoteEndPoint;
      Console.WriteLine("Connected with {0} at port {1}",clientep.Address, clientep.Port);

      string welcome = "Welcome";
      byte[] data = new byte[1024];
      data = Encoding.ASCII.GetBytes(welcome);
      client.Send(data, data.Length,SocketFlags.None);

      Console.WriteLine("Disconnected from {0}",clientep.Address);
      client.Close();
      socket.Close();
   }
}

Ответы [ 2 ]

3 голосов
/ 10 октября 2011

Когда у вас есть статический IP-адрес, вам нужно добавить его в качестве одного из IP-адресов в сетевом адаптере, проверьте Настройка статического IP-руководства для того же.

Затем необходимо убедиться, что сокет сервера указан в этом IP-адресе, поскольку вы используете IPAddress.Any, он будет привязан ко всем доступным IP-адресам в вашей системе.

Наконец, вам необходимо явно указать статический IP в вашем клиентском коде. Возможно, сохранить этот IP-адрес в файле конфигурации для его изменения на более позднем этапе. Если вы предпочитаете, вы можете установить собственное доменное имя и указать статический ip для использования его вместо IP.

1 голос
/ 10 октября 2011

Да, нам нужно настроить порт и IP, чтобы мы могли общаться между двумя серверами. Я сделал конфигурацию VPN для этого. Пожалуйста, убедитесь, что вы можете подключиться к той системе, откуда вы пытаетесь запустить этот код. Вы можете запустить команду ipconfig / netstat из командной строки, чтобы проверить это.

Пожалуйста, сделайте это сначала и убедитесь, что обе системы способны общаться друг с другом, а затем, пожалуйста, попробуйте запустить этот код. После этого, если проблема не устранена, свяжитесь со мной.

...