Unity Sockets UDP 异步 接收

原创 2017年07月04日 16:20:38
using UnityEngine;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System;
using System.Text;
 
///@brief
///文件名称:UDPAsyncRecvive
///功能描述:UDP异步接收
///数据表:
///作者:YuXianQiang
///日期:#CreateTime#
///R1:
///修改作者:
///修改日期:
///修改理由:
 
public class UDPAsyncRecvive : MonoBehaviour 
{
    void Start()
    {
        ThreadRecvive();
    }
 
    /// <summary>
    /// 开始线程接收
    /// </summary>
    private void ThreadRecvive()
    {
        //开一个新线程接收UDP发送的数据
        new Thread(delegate()  //delegate()也可写成 ()=>
        {
            IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 5678);
            UdpClient udp = new UdpClient(ipep);
            UDPState state = new UDPState(ipep, udp);
            udp.BeginReceive(CallBackRecvive, state); //异步接收
        }) {IsBackground = true}.Start(); //设置为后台线程,并开启线程
    }
 
    /// <summary>
    /// 异步接收回调
    /// </summary>
    /// <param name="ar"></param>
    private void CallBackRecvive(IAsyncResult ar)
    {
        UDPState state = ar.AsyncState as UDPState;
        if (state != null)
        {
            IPEndPoint ipep = state.IPEP;
            //这里接收到数据后,应该做数据完整检查,这里只是单纯做一个接收
            byte[] data = state.UDPClient.EndReceive(ar, ref ipep);
            //这里可以做一个数据检查 如:void CheckData(data)
            Debug.Log(Encoding.Default.GetString(data));
 
            //继续接收下一条消息
            state.UDPClient.BeginReceive(CallBackRecvive, state);
        }
    }
}
 
public class UDPState
{
    private UdpClient udpClient;
 
    public UdpClient UDPClient
    {
        get { return udpClient; }
    }
 
    private IPEndPoint ipep;
    public IPEndPoint IPEP
    {
        get { return ipep; }
    }
 
    //构造函数
    public UDPState(IPEndPoint ipep, UdpClient udpClient)
    {
        this.ipep = ipep;
        this.udpClient = udpClient;
    }
}

Unity3D笔记——UDP 广播和异步接受

前言:Unity3D笔记是我平时做一些好玩的测试和研究,记录的笔记。会比较详细也可能随口一提就过了。 所以大家见谅了,内容一般都会是原创的(非原创我会注明转载)。由于很多内容其他的朋友也肯定研究发表过...
  • YYL_Debug
  • YYL_Debug
  • 2017-12-27 10:05:42
  • 149

U3D Udp的发送、接受和处理

  • 2017年09月01日 16:01
  • 3KB
  • 下载

在unity中用UDP实现发送消息机制

首先,用Unity新建两个项目,然后一个写Server,另一个写Client。`using UnityEngine; using System.Collections; //引入库 using ...
  • caojianhua1993
  • caojianhua1993
  • 2016-12-21 16:02:17
  • 4434

Unity3d之Socket UDP协议

(一)Socket(套接字)UDP协议的特点 1、是基于无连接的协议,没有生成连接的延迟所以速度比TCP快; 2、支持一对一和一对多连接,可以使用广播的方式多地址发送; 3、与Tcp的报头比是8:20...
  • dingkun520wy
  • dingkun520wy
  • 2015-10-17 10:27:28
  • 10535

使用UDPClient发送和接收数据

前些日子,做了一个实时采集数据的软件,并要求实时通过网络发送出去,采用UDP方式,也需要接收命令等信息。因此做了下面一个UDPClient发送和接收数据的类完成此功能。该类在发送时使用RemoteHo...
  • null1
  • null1
  • 2008-01-03 18:27:00
  • 11755

c# 使用UDPClient实现异步通信的两种表现形式

  • 2014年04月23日 13:47
  • 94KB
  • 下载

Unity3D笔记——TCP简单服务器和客户端的连接和异步接受

前言:Unity3D笔记是我平时做一些好玩的测试和研究,记录的笔记。会比较详细也可能随口一提就过了。 所以大家见谅了,内容一般都会是原创的(非原创我会注明转载)。由于很多内容其他的朋友也肯定研究发表过...
  • YYL_Debug
  • YYL_Debug
  • 2018-02-08 17:34:00
  • 44

unity开发:Qt C++与unity之间UDP网络通信

再试试UDP通信,发送速度快,更加灵活 UDP实际相当于是对等通信,不用简历连接,但是这里为了有个server的概念,在服务端绑定了端口,而客户端则是发送时随机分配的端口 Qt C++服务端 简历...
  • u012234115
  • u012234115
  • 2015-06-14 12:09:59
  • 3048

Unity Socket UDP

using System.Collections; using System.Collections.Generic; using System.Net.Sockets; using System.N...
  • qq992817263
  • qq992817263
  • 2015-07-01 13:04:18
  • 1564

unity开发:UDP socket网络连接

由于UDP是面向无连接的通信,所以实际上服务端和客户端是对等的,只不过服务端绑定了一个监听端口,而客户端每次都是自动分配的连接端口,其实也可以做成两边都绑定端口或者都不绑定端口的P2P模式。 以下U...
  • u012234115
  • u012234115
  • 2015-06-13 17:51:21
  • 6791
收藏助手
不良信息举报
您举报文章:Unity Sockets UDP 异步 接收
举报原因:
原因补充:

(最多只允许输入30个字)