Реализация UDP сервера за NAT с помощью STUN

341
04 апреля 2017, 09:11

Пытаюсь реализовать сервер за NAT с помощью STUN. Вкратце, делаю так:

  • На стороне сервера
    1. Создаю сокет
    2. Получаю у STUN сервера внешний IP и PORT
    3. Начинаю слушать

И сервер получает какие-то непонятные данные, после чего вываливается в исключение SocketException

Код сервера:

using System;
using System.Net;
using System.Text;
using System.Net.Sockets;
using server_for_stun.STUN.Client;
namespace server_for_stun
{
    class Program
    {       
        static void Main(string[] args)
        {
            var client = new UdpClient(1684, AddressFamily.InterNetwork);
            var result = STUN_Client.Query("stun.sipnet.ru", 3478, client.Client);
            Console.WriteLine(result.PublicEndPoint);
            while (true)
            {
                // получаем сообщение
                StringBuilder builder = new StringBuilder();
                int bytes = 0; // количество полученных байтов
                byte[] data = new byte[256]; // буфер для получаемых данных
                //адрес, с которого пришли данные
                EndPoint remoteIp = new IPEndPoint(IPAddress.Any, 0);
                do
                {
                    bytes = client.Client.ReceiveFrom(data, ref remoteIp);
                    builder.Append(Encoding.Unicode.GetString(data, 0, bytes));
                }
                while (client.Client.Available > 0);
                // получаем данные о подключении
                IPEndPoint remoteFullIp = remoteIp as IPEndPoint;
                // выводим сообщение
                Console.WriteLine("{0}:{1} - {2}", remoteFullIp.Address, remoteFullIp.Port, builder);
             }
        }
    }
}

Вот как это выглядит:

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

READ ALSO
Imagelist неправильная работа

Imagelist неправильная работа

Пишу для себя небольшую программкуПоявилась проблема с imageList

205
Как задать цвет пикселям?

Как задать цвет пикселям?

Мне выдаёт ошибку:

271
Область влияния переменных в c#?

Область влияния переменных в c#?

Я немного запутался, вот есть два куска кода, в котором в одном из них поле помечено модификатором static -значит оно глобальное и объявлено...

309
Отсутствует шаблон для WPF4 в MVVM Light

Отсутствует шаблон для WPF4 в MVVM Light

скачал и установил MVVM Light V52

218