Отправка UDP-вызовов в единстве на Android - PullRequest
0 голосов
/ 11 декабря 2018

Я пытаюсь отправлять 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 с помощьюта же версия андроида, что и на планшете и все работает.Я не знаю настройки на устройстве, где оно могло бы получать данные, но не отправлять их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...