使用udp发送数据

时间:2015-04-06 13:42:18

标签: c# android udp

我正在使用这些脚本发送和接收数据,当我从Android支持发送数据到我的电脑时,我无法收到任何东西!我无法找到问题,任何人都可以帮助我

using UnityEngine;
using System.Collections;
using System;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.Threading;

public class UDPSend : MonoBehaviour
{
    public string IP = "myIP"; // default local
    public int port = 26000;  
    IPEndPoint remoteEndPoint;
    UdpClient client;
    string strMessage="";

    public void Start()
    {
        init();   
    }

    void OnGUI()
    {
        Rect rectObj=new Rect(40,380,200,400);
        GUIStyle style = new GUIStyle();
        style.alignment = TextAnchor.UpperLeft;
        GUI.Box(rectObj,"UDPSendData\n IP : "+IP+" Port : "+port,style);
        //
        strMessage=GUI.TextField(new Rect(40,420,140,20),strMessage);
        if (GUI.Button(new Rect(190,420,40,20),"Send"))
        {
            sendString(strMessage+"\n");
        }      
    }

    // init
    public void init()
    {
        IP="myIP";
        port=26000; // quake port ;)
        remoteEndPoint = new IPEndPoint(IPAddress.Parse(IP), port);
        //remoteEndPoint = new IPEndPoint(IPAddress.Broadcast, port); // toute machine
        client = new UdpClient();
    }

    // sendData
    private void sendString(string message)
    {
        try 
        {
            byte[] data = Encoding.UTF8.GetBytes(message);
            client.Send(data, data.Length, remoteEndPoint);
        }
        catch (Exception err)
        {
            print(err.ToString());
        }
    }

    void OnDisable()
    {
        if ( client!= null)   client.Close();
    }
}

UDPReceive:

using UnityEngine;
using System.Collections;
using System;
using System.Net;
using System.Text;
using System.Net.Sockets;
using System.Threading;
using System.Net.NetworkInformation;

public class UDPReceive : MonoBehaviour {
    Thread receiveThread; 
    UdpClient client; 
    public int port = 26000;  
    string strReceiveUDP="";
    string LocalIP = String.Empty;
    string hostname;

    public void Start()
    {
        Application.runInBackground = true;
        init();   
    }
    // init
    private void init()
    {
        receiveThread = new Thread( new ThreadStart(ReceiveData));
        receiveThread.IsBackground = true;
        receiveThread.Start();
        hostname = Dns.GetHostName();
        IPAddress[] ips = Dns.GetHostAddresses(hostname);
        if (ips.Length > 0)
        {
            LocalIP = ips[0].ToString();
        }
    }

    void OnGUI()
    {
        Rect rectObj=new Rect(10,10,400,200);
        GUIStyle style = new GUIStyle();
        style.alignment = TextAnchor.UpperLeft;
        GUI.Box(rectObj,hostname+" MY IP : "+LocalIP+" : "+strReceiveUDP,style);
    }

    private  void ReceiveData() 
    {
        client = new UdpClient(port);
        while (true) 
        {
            try 
            {
                IPEndPoint anyIP = new IPEndPoint(IPAddress.Broadcast, port);
                //IPEndPoint anyIP = new IPEndPoint(IPAddress.Any, 0);
                byte[] data = client.Receive(ref anyIP);
                string text = Encoding.UTF8.GetString(data);
                strReceiveUDP = text;
                //Debug.Log(strReceiveUDP);
            }
            catch (Exception err) 
            {
                print(err.ToString());
            }
        }
    }

    public string UDPGetPacket()
    {
        return strReceiveUDP;
    }

    void OnDisable()
    {
        if ( receiveThread!= null)   receiveThread.Abort();
        client.Close();
    }
}

myIP为127.0.0.1时,一切正常

0 个答案:

没有答案