Problemas com o UDP no Windows 10. UWP
Estou com o seguinte problema: Estou comunicando 2 máquinas diferentes na rede local com o UDP.
De um lado, eu tenho uma máquina Windows 7 com estrutura 4.5 instalada. Estou usando a classe System.Net com este código:
public static void UDPWriter()
{
Task.Run(async () =>
{
byte[] data = new byte[10000];
IPEndPoint ipep = new IPEndPoint(IPAddress.Pars("192.168.0.16"), 5002);
Socket udpClient = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
udpClient.Connect(ipep);
while (true)
{
await Task.Delay(24);
string input = packagetosend;
data = Encoding.ASCII.GetBytes(input);
var receivedResults = udpClient.Send(data, SocketFlags.None);
}
});
}
Por outro lado, estou trabalhando com um aplicativo universal do Windows 10 com este código:
async static private void EnablerListener()
{
//Click
HostName hostname = new HostName("192.168.0.16");
listener = new DatagramSocket();
listener.Control.InboundBufferSizeInBytes=10000;
listener.MessageReceived += socket_MessageReceived;
await listener.BindServiceNameAsync("5002");
}
static void socket_MessageReceived(DatagramSocket sender, DatagramSocketMessageReceivedEventArgs args)
{
// Message received. Place your logic here
}
Assim que envio um pacote "pequeno" (minha teoria é que menos do que o MTU) recebo corretamente o que é enviado.
O problema vem com o meu pacote udp está fragmentado. Quando envio 1 pacote dividido em 4 (o vi no Wireshark), o software Windows 10 não recebe nada. Eu tentei mudar o listener.Control.Donotfragment (talvez eu esteja usando errado), mas parece que não está funcionando. UPDATE1: No wireshark, recebo esta mensagem tempo de vida excedido (tempo de remontagem do fragmento excedido) Apenas alguns pacotes no Wireshark, outros são remontados com êxito (quase todos)