예제 #1
0
    // Use this for initialization
    public void Start()
    {
        Debug.Log("Initializing Brodcasting");
        if (started)
        {
            Debug.Log("Brodcasting already started once, ignored.");
            return;
        }
        localIpList = new List <string>();
        getLocalIpAddresses();
        udpSrvinfoClient = new UdpClient();
        // EnableBroadcast=true MUST be added for Android to allow sending broadcast messages
        udpSrvinfoClient.EnableBroadcast = true;
        udpSrvinfoClient.Client.Bind(new IPEndPoint(IPAddress.Any, srvInfoPort));

        started = true;
        var from = new IPEndPoint(0, 0);

        sendSrvInfoRequest();

        Task.Run(() =>
        {
            Debug.Log("Initializing Brodcasting listening thread started ");
            while (true)
            {
                var recvBuffer     = udpSrvinfoClient.Receive(ref from);
                string receivedMsg = Encoding.UTF8.GetString(recvBuffer);
                Debug.Log("Broadcast msg received :" + receivedMsg);
                MqttSrvInfoMsg mqttSrvInfo = MqttSrvInfoMsg.parseJson(receivedMsg);
                mqttPoseProxy.setMqttSrvAddress(mqttSrvInfo.payload.ip, mqttSrvInfo.payload.port);
            }
        });
    }
예제 #2
0
    static public MqttSrvInfoMsg parseJson(string json)
    {
        MqttSrvInfoMsg obj = JsonUtility.FromJson <MqttSrvInfoMsg>(json);

        return(obj);
    }