Как подружить два хоста за натом?
От: VAD_OS  
Дата: 09.02.15 09:49
Оценка:
Следующий код запускается за Nat-ом:

    private void Form1_Load(object sender, EventArgs e)
        {
            client = new UdpClient(564);
            client.AllowNatTraversal(true);
            STUN_Result result = STUN_Client.Query("stun.l.google.com", 19302, client.Client);
            label1.Text = result.NetType.ToString();
            textBox1.Text += "\r\n" + string.Format("{0}:{1}", result.PublicEndPoint.Address.ToString(), result.PublicEndPoint.Port);
            recv();
        }
 
        async void recv()
        {
            while (true)
            {
                UdpReceiveResult res = await client.ReceiveAsync();
                textBox2.Text = ASCIIEncoding.ASCII.GetString(res.Buffer) + "\r\n" + textBox2.Text;
                client.Send(res.Buffer, res.Buffer.Length,res.RemoteEndPoint);
            }
        }


Определяется внешний IP и порт(Использовал библиотеку LumiSoft.Net, которая есть в nuget, а где то год назад тоже самое делал вручную). Но данные посланные снаружи не приходят на открытый порт.
Тип Nat-a определяется как FullCone

label1.Text = result.NetType.ToString()


Почему пакеты не доходят?

проверяю с помощью сервиса http://www.networkcenter.info/tests/portcheck
Отредактировано 15.12.2015 10:07 VAD_OS . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.