Пытаюсь реализовать сервер за NAT с помощью STUN. Вкратце, делаю так:
И сервер получает какие-то непонятные данные, после чего вываливается в исключение 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);
}
}
}
}
Вот как это выглядит:
Пробовал создавать другой сокет для получения сообщений, но в этом случае они не приходят вообще. В чем проблема?
Я немного запутался, вот есть два куска кода, в котором в одном из них поле помечено модификатором static -значит оно глобальное и объявлено...