【游戏技术群】959392658  【游戏出海群】12067810
游戏蛮牛 手机端
开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

问答求助

关注:579

当前位置:游戏蛮牛 技术专区 问答求助

_____________________________________________________________________________________________________________
问答求助版块规则:

  1、问题尽量描述清楚
      2、代码要放在代码块里
      3、附件最好放到云盘,然后把链接放到TXT文档里,上传TXT文档。【最好没有附件,你懂得】
      4、本版块回复不得无意义,如:顶、呵呵、不错......以及擦边!【真的会扣分的哦】严重者,封IP!
      5、问题得到解决,请选择最佳答案。
      6、若问题是你自己解决了,可以联系管理员,返还蛮牛币,写下你的答案,另有蛮牛币奖赏。
_____________________________________________________________________________________________________________
查看: 685|回复: 2

[脚本] UWP进行UDP通信

[复制链接]  [移动端链接]
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中进行通信啊?

回复

使用道具 举报

排名
951
昨日变化
3

26

主题

186

帖子

2092

积分

Rank: 9Rank: 9Rank: 9

UID
114543
好友
17
蛮牛币
8945
威望
0
注册时间
2015-7-21
在线时间
628 小时
最后登录
2019-3-18

专栏作家

发表于 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
}

回复

使用道具 举报

排名
951
昨日变化
3

26

主题

186

帖子

2092

积分

Rank: 9Rank: 9Rank: 9

UID
114543
好友
17
蛮牛币
8945
威望
0
注册时间
2015-7-21
在线时间
628 小时
最后登录
2019-3-18

专栏作家

发表于 2019-1-7 15:13:41 | 显示全部楼层
正好用到

回复

使用道具 举报

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

本版积分规则

快速回复 返回顶部 返回列表