сокеты - UDP Отправка данных через интернет

1

Я создал приложение чата в С#.net, которое отправляет и получает данные между двумя компьютерами.

Итак, я использовал этот метод для отправки данных:

int port = 11000;    
private void send(string data, string ip)
{
    Socket sending_socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
    IPEndPoint sending_end_point = null;
    byte[] send_buffer = Encoding.ASCII.GetBytes(data);
    sending_end_point = new IPEndPoint(IPAddress.Parse(ip), port);
    try { sending_socket.SendTo(send_buffer, sending_end_point); }
    catch { }
}

И чтобы получить, я использовал это:

string receiveddata = "";
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
    UdpClient listener = new UdpClient(port);
    IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, port);
    byte[] receive_byte_array;

    try
    {
        receive_byte_array = listener.Receive(ref groupEP);
        receiveddata = Encoding.ASCII.GetString(receive_byte_array, 0, receive_byte_array.Length);
    }
    catch { }
    listener.Close();
}

Это работает без проблем между двумя компьютерами в локальной сети, но я хотел бы узнать (если возможно), как делать то же самое через Интернет.

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

Итак, мой вопрос: как мне изменить этот код (если нужно), чтобы я мог отправлять и получать данные (UDP) через Интернет, предполагая, что я правильно перенаправил порт и предполагаю, что знаю внешние IP-адреса обоих маршрутизаторов?

Заранее спасибо.

Теги:
sockets

1 ответ

0

Это должно работать нормально, если ваш (общедоступный) IP-адрес правильный и порты правильно перенаправлены на ваш маршрутизатор (что означает, пересылается на правильный IP-адрес по правильному протоколу в вашем случае UDP).

Вы знаете, что это UDP, хотя и не надежная передача данных.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню