Я пытаюсь отправлять UDP-пакеты туда и обратно с планшета и ноутбука.Моя проблема в том, что я не могу отправлять пакеты с моего планшета на свой ноутбук.Я могу отправлять пакеты с моего ноутбука на себя, используя как 127.0.0.1, так и локальный ip 10.1.10.xxx.Я также могу отправлять пакеты с моего ноутбука на планшет Android с помощью ip 10.1.10.yyy.Я также могу отправлять пакеты с планшета на себя, используя ip-адрес 127.0.0.1 и 10.1.10.yyy.Я не думаю, что это проблема настройки маршрутизатора.Я использую код из https://forum.unity.com/threads/simple-udp-implementation-send-read-via-mono-c.15900/
Отправить код
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System;
public class Send : MonoBehaviour {
public string IP;
public int port;
public void SendNetworkMessage(string message)
{
Debug.Log("Testing");
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
IPAddress broadcast = IPAddress.Parse(IP);
Debug.Log("Created Socket");
byte[] sendbuf = Encoding.ASCII.GetBytes(message);
IPEndPoint ep = new IPEndPoint(broadcast, port);
s.SendTo(sendbuf, ep);
Debug.Log("Message Sent");
}
}
Получить код
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System;
using System.Threading;
public class Receive : MonoBehaviour {
public int port;
UdpClient listener;
IPEndPoint groupEP;
Thread receiveThread;
public void Start()
{
receiveThread = new Thread(new ThreadStart(Listen));
receiveThread.IsBackground = true;
receiveThread.Start();
}
public void OnDisable()
{
if(receiveThread != null)
{
receiveThread.Abort();
}
listener.Close();
}
public void Listen()
{
listener = new UdpClient(port);
groupEP = new IPEndPoint(IPAddress.Any, port);
while (true)
{
try
{
Debug.Log("Waiting for broadcast");
byte[] bytes = listener.Receive(ref groupEP);
Debug.Log("Received broadcast from " + groupEP);
Debug.Log(Encoding.ASCII.GetString(bytes, 0, bytes.Length));
}
catch (SocketException e)
{
Debug.Log(e);
}
}
}
}
Обновление: я тестировал это в эмуляторе Android с помощьюта же версия андроида, что и на планшете и все работает.Я не знаю настройки на устройстве, где оно могло бы получать данные, но не отправлять их.