开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

教程分享

关注:636

当前位置:游戏蛮牛 技术专区 教程分享

查看: 1001|回复: 12

[实例教程] Sockets UDP 异步 接收

[复制链接]  [移动端链接]
5熟悉之中
583/1000
排名
5933
昨日变化
3

10

主题

125

帖子

583

积分

Rank: 5Rank: 5

UID
152229
好友
0
蛮牛币
2214
威望
0
注册时间
2016-6-16
在线时间
248 小时
最后登录
2017-6-26
发表于 2016-12-10 23:41:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
本帖最后由 wtujoxk 于 2016-12-10 23:59 编辑

在做局域网聊天,局域网数据收发时,一般都会使用UDP
这一篇主要就是UDP的异步接收,端口号可根据自己的需要定义,我这里用了Port:5678
可用网络调试小助手看看效果


QQ图片20161210233921.png

这篇帖子里有个同步发送:Unity 调试 网络输出日志 两个合起来就可以做个简单的聊天系统

代码:
[C#] 纯文本查看 复制代码
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;
    }
}






回复

使用道具 举报

3偶尔光临
267/300
排名
6818
昨日变化
8

3

主题

79

帖子

267

积分

Rank: 3Rank: 3Rank: 3

UID
187699
好友
0
蛮牛币
988
威望
0
注册时间
2016-11-28
在线时间
59 小时
最后登录
2017-5-16
发表于 2016-12-11 19:36:11 | 显示全部楼层
简单学习一下

回复

使用道具 举报

6蛮牛粉丝
1245/1500
排名
4841
昨日变化
7

2

主题

776

帖子

1245

积分

Rank: 6Rank: 6Rank: 6

UID
92518
好友
1
蛮牛币
2466
威望
0
注册时间
2015-4-15
在线时间
277 小时
最后登录
2017-4-6
发表于 2016-12-12 10:28:02 | 显示全部楼层
一个男人在外工作20年,
终于要回家了,
老板问他:你是要20年的工资还是要3句忠告?
男人说我明天上路,明早给您答案好吗?
老板说可以。
当晚男人未眠…
早晨,
他对老板说:我要3个忠告。
于是老板给他3句话。
一、不要试图寻找不可能的捷径,世上没有便宜的事,只有脚踏实地才是最好的方法…无论做何事。
二、不要对明知不是好事的事过分好奇,有可能你会因此而丧命。
三、不要在冲动时做任何决定,否则这个决定就有可能成为你一辈子的遗憾。
说完老板给男人一些钱和三个面包,并叮嘱:最大的面包在到家后才能吃。
男人上路了…他走了好几天…
把第一个面包吃了一半了,没过多久遇到一个路口,
他打听:请问到**走哪条路近?
路人甲:走小路吧,近。
路人乙:走大路吧,安全。
他迫不急待要与妻子见面,于是走了小路。
走了没多久就听到有路人说附近闹山贼,
于是他想起了老板的第一个忠告:不要试图寻找捷径。
于是他回头去走那条大路。
又走了几天,第二个面包也吃了一部分了…
他找到一家极便宜的客栈投宿。
半夜听见有女子哭声,他睡不下。
于是决定出门看看。
这时他想到了第二个忠告:
不要对明知不是好事的事过分好奇。
于是他又睡下了。第二日起程时,店家惊道:你还活着?!
他不解,遂问原由。
店家说他有个疯女儿,发病时用哭声引人出来再将其杀害,
昨晚投宿的客人只有你一个活着。
男人长叹:啊…
又走了几天,当第二个面包吃完时他已离家不远了。
他更加激动了。天刚黑下来没多久,他就走到了自己的村子。
到家时他刚准备敲门,却听到屋里有男人的声音。
他气极了,拿起一把砍柴刀就准备冲进屋子将那男的杀掉。
但这时他想到了第三个忠告:不要在冲动时做任何决定,可能这个决定会让你后悔一辈子。
于是他冷静下来,在屋外坐了一夜。
第二天早上他很早就敲开了门,妻子见他回来十分高兴。
但他却很冷漠:那个男人是谁?他妻子笑曰:那是我们的儿啊…你走后没多久我就…
这时他发现这个年轻小伙竟和自己长得相似极了。
父子初次见面,相拥而泣…
一阵关切过后男人拿出第三个面包准备和妻、子一齐分享…
切开之后却发现20年的工资全在里面,还有一张纸条,
上面写着: 勇敢新世界,华为2017校园招聘,高管校园宣讲会开始啦!汇聚全球无数追梦人的舞台,华为期待您的加入。

回复 支持 反对

使用道具 举报

7日久生情
4440/5000
排名
262
昨日变化

0

主题

1915

帖子

4440

积分

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

UID
3215
好友
0
蛮牛币
187
威望
0
注册时间
2013-9-4
在线时间
1091 小时
最后登录
2017-6-27
发表于 2016-12-12 14:12:15 | 显示全部楼层
楼上亮了!131232

回复

使用道具 举报

5熟悉之中
522/1000
排名
4087
昨日变化
1

0

主题

98

帖子

522

积分

Rank: 5Rank: 5

UID
119648
好友
0
蛮牛币
935
威望
0
注册时间
2015-8-25
在线时间
170 小时
最后登录
2017-6-26
QQ
发表于 2016-12-12 15:46:16 | 显示全部楼层
简单学习一下

回复

使用道具 举报

7日久生情
2430/5000
排名
2494
昨日变化
25

2

主题

1602

帖子

2430

积分

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

UID
182740
好友
0
蛮牛币
3717
威望
0
注册时间
2016-11-10
在线时间
404 小时
最后登录
2017-6-27
发表于 2016-12-18 22:15:24 | 显示全部楼层

非常感谢楼主分享

回复 支持 反对

使用道具 举报

5熟悉之中
566/1000
排名
5082
昨日变化
3

1

主题

126

帖子

566

积分

Rank: 5Rank: 5

UID
62741
好友
0
蛮牛币
571
威望
0
注册时间
2014-12-21
在线时间
249 小时
最后登录
2017-6-27
发表于 2017-1-5 14:06:42 | 显示全部楼层
这广告猝不及防

回复

使用道具 举报

2初来乍到
128/150
排名
11793
昨日变化
13

0

主题

28

帖子

128

积分

Rank: 2Rank: 2

UID
156414
好友
1
蛮牛币
213
威望
0
注册时间
2016-7-11
在线时间
52 小时
最后登录
2017-2-26
发表于 2017-1-12 17:59:11 | 显示全部楼层
非常感谢楼主分享

回复 支持 反对

使用道具 举报

6蛮牛粉丝
1478/1500
排名
17304
昨日变化
27

2

主题

1256

帖子

1478

积分

Rank: 6Rank: 6Rank: 6

UID
185807
好友
0
蛮牛币
1776
威望
0
注册时间
2016-11-22
在线时间
200 小时
最后登录
2017-6-26
发表于 2017-2-15 14:11:27 | 显示全部楼层
谢谢分享,学习啦

回复

使用道具 举报

4四处流浪
389/500
排名
10414
昨日变化
13

0

主题

214

帖子

389

积分

Rank: 4

UID
200434
好友
0
蛮牛币
491
威望
0
注册时间
2017-1-10
在线时间
115 小时
最后登录
2017-6-27
发表于 2017-3-29 16:27:55 | 显示全部楼层
666666666666666666

回复 支持 反对

使用道具 举报

2初来乍到
107/150
排名
17304
昨日变化
27

0

主题

47

帖子

107

积分

Rank: 2Rank: 2

UID
154633
好友
0
蛮牛币
53
威望
0
注册时间
2016-7-1
在线时间
42 小时
最后登录
2017-5-19
发表于 2017-5-8 08:45:38 | 显示全部楼层
jdaksdkjakdlka

回复

使用道具 举报

6蛮牛粉丝
1128/1500
排名
1966
昨日变化
2

23

主题

286

帖子

1128

积分

Rank: 6Rank: 6Rank: 6

UID
89788
好友
1
蛮牛币
1803
威望
0
注册时间
2015-4-7
在线时间
291 小时
最后登录
2017-6-27
发表于 6 天前 | 显示全部楼层
谢谢楼主分享

回复

使用道具 举报

排名
29470
昨日变化
17879

0

主题

2

帖子

13

积分

Rank: 1

UID
167234
好友
0
蛮牛币
24
威望
0
注册时间
2016-9-6
在线时间
5 小时
最后登录
2017-6-23
发表于 4 天前 | 显示全部楼层
这波广告插得可以

回复 支持 反对

使用道具 举报

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

本版积分规则

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