找回密码
 注册帐号

扫一扫,访问微社区

GUI UWP进行UDP通信

2
回复
867
查看
[ 复制链接 ]
7日久生情
1891/5000
排名
894
昨日变化

1

主题

100

帖子

1891

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
130170
好友
1
蛮牛币
0
威望
0
注册时间
2015-11-27
在线时间
656 小时
最后登录
2019-1-7
2019-1-7 15:11:39 显示全部楼层 阅读模式
2994蛮牛币
如何在Hololens中进行通信啊?
回复

使用道具 举报

排名
950
昨日变化

26

主题

202

帖子

2125

积分

Rank: 9Rank: 9Rank: 9

UID
114543
好友
17
蛮牛币
9024
威望
0
注册时间
2015-7-21
在线时间
641 小时
最后登录
2019-5-28

专栏作家

2019-1-7 15:11:40 显示全部楼层
[C#] 纯文本查看 复制代码
using UnityEngine;
using UnityEngine.UI;
using System;
using System.IO;
using System.Text;
#if !UNITY_EDITOR
using Windows.Networking.Sockets;
#endif

public class UDPSever : MonoBehaviour
{
    public static  string receiveMsg = string.Empty;//收到的内容
    private string receiveIP = string.Empty;//收到的IP
    private string receivePort = string.Empty;//端口
    private string externalPort = "12345";
    //  public Text receiveStr;//该显示收到的内容
    // public Text ipStr;
    public GameObject Cub;
#if !UNITY_EDITOR
    DatagramSocket socket;
#endif

#if !UNITY_EDITOR
    // use this for initialization
    async void Start()
    {

        Debug.Log("等待连接...");

        socket = new DatagramSocket();
        socket.MessageReceived += Socket_MessageReceived;

        try
        {
            await socket.BindEndpointAsync(null, externalPort);
        }
        catch (Exception e)
        {
            Debug.Log(e.ToString());
            Debug.Log(SocketError.GetStatus(e.HResult).ToString());
            return;
        }

        Debug.Log("exit start");

    }
#endif

    
    void Update()
    {
        if (receiveMsg == "false")
        {
            Cub.SetActive(false);
        }
        else
        {
            Cub.SetActive(true);
        }
        //if (ipStr.text != receiveIP)
        //{
        //    ipStr.text = receiveIP;
        //    Debug.Log("ipStr.text..." + ipStr.text);
        //}
    }


    void XMLRead(string XmlString)
    {
        

    }

#if !UNITY_EDITOR

    public void UdpSendBtnClick(string value)//发送数据到来的地址
    {
        //Debug.Log("传值点击事件按钮 " + value + " <<<<< "+ receiveIP +  " >>>> " + receivePort);
        SendUDPMessage(receiveIP, receivePort, System.Text.Encoding.UTF8.GetBytes(value));
    }

    //发送UDP数据包
    public async void SendUDPMessage(string HostIP, string HostPort, byte[] data)
    {      
        await _SendUDPMessage(HostIP, HostPort, data);
    }

    private async void Socket_MessageReceived(Windows.Networking.Sockets.DatagramSocket sender,
        Windows.Networking.Sockets.DatagramSocketMessageReceivedEventArgs args)
        //接收消息
    {
               Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
//注册GBK编码
        Encoding encodingGbk =Encoding.GetEncoding("GBK");

        //读取从UDP回音客户端接收到的消息
        Stream streamIn = args.GetDataStream().AsStreamForRead();
        StreamReader reader = new StreamReader(streamIn,encodingGbk);
        //string message = await reader.ReadLineAsync(); 
    string message = await reader.ReadToEndAsync(); 
        receiveIP = args.RemoteAddress.DisplayName;
        receivePort = args.RemotePort;
        Debug.Log("GOT MESSAGE FROM: " + receiveIP + receivePort);
        receiveMsg = message;
        Debug.Log("MESSAGE: " + message);
    }

    private async System.Threading.Tasks.Task _SendUDPMessage (string externalIP, string externalPort, byte[] data)
    //发送消息
        {
        using (var stream = await socket.GetOutputStreamAsync(new Windows.Networking.HostName(externalIP), externalPort))
        {
            using (var writer = new Windows.Storage.Streams.DataWriter(stream))
            {
                //Debug.Log(" ????? "+ externalIP +  " ????? " + externalPort);
                writer.WriteBytes(data);
                await writer.StoreAsync();
 
            }
        }
    }

#endif
}
回复

使用道具 举报

排名
950
昨日变化

26

主题

202

帖子

2125

积分

Rank: 9Rank: 9Rank: 9

UID
114543
好友
17
蛮牛币
9024
威望
0
注册时间
2015-7-21
在线时间
641 小时
最后登录
2019-5-28

专栏作家

2019-1-7 15:13:41 显示全部楼层
正好用到
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则