美文网首页
Unity UDP组播

Unity UDP组播

作者: LeoYangXD | 来源:发表于2018-01-15 18:42 被阅读75次
using System.Collections;
using System.Collections.Generic;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using UnityEngine;


public class UDPClientMul : MonoBehaviour
{
    UdpClient Sendclient;
    //  Socket socket;
    static UdpClient ReceiveClient;
    IPEndPoint SendPort;
    IPEndPoint ReceivePort;
    Thread t;
    int i;
    public string msgNma = "Yang";
    public TextMesh textShow;
    void Start()
    {
        Sendclient = new UdpClient();
    //发送信息的端口一定要和接受的端口号一样
    SendPort = new IPEndPoint(IPAddress.Parse("234.5.6.7"), 7788);
    ReceiveClient = new UdpClient(7788);
    ReceiveClient.JoinMulticastGroup(IPAddress.Parse("234.5.6.7"));
    ReceivePort = new IPEndPoint(IPAddress.Parse("234.5.6.7"), 7788);
    t = new Thread(new ThreadStart(RecvThread));
    t.IsBackground = true;
    t.Start();
}
private void Update()
{
    if (Input.GetKey(KeyCode.A))
    {
        i++;
        byte[] buf = Encoding.Default.GetBytes(i.ToString());
        Sendclient.Send(buf, buf.Length, SendPort);
    }
    textShow.text = msgNma;
}
void RecvThread()
{

    // IPEndPoint multicast = new IPEndPoint(IPAddress.Parse("234.5.6.7"), 7788);
    while (true)
    {
        byte[] buf = ReceiveClient.Receive(ref ReceivePort);
        string msg = Encoding.Default.GetString(buf);
        msgNma = "Yang" + msg;
        Debug.Log(msg);
    }

}
private void OnApplicationQuit()
{
    if (t != null)
    {
        t.Interrupt();
        t.Abort();

    }
    //最后关闭socket  
    if (Sendclient != null || ReceiveClient != null)
    {
        Sendclient.Close();
        ReceiveClient.Close();
    }
}
}

UDP的组播:服务器接受信息的端口必须和客户端接受信息的socket 端口一致。
问:一个Udp Server加入某个组播组,然后绑定某个端口,开始接收数据,能接收到哪些数据?

答:可以接收到发往这个组播组这个端口的数据,可以接收到发往这个端口的广播数据,可以接收到专门发往这个端口的单播数据。

问:(1)怎样知道自己周围组播的组的情况(D类IP地址被占用的情况)?(2)自己可否只是通过编程就建立一个组播组?(没有找到资料)

答:(1)还不知道。(2)(不太明白详细具体情况)。是可以的,一个Socket往一个固定的组播地址的端口发送数据,那么一个组播的组就建立起了,其余计算机可以加入此地址标示的组,接收信息。(当然,需要硬件软件协议支持。另外对此组播地址的值也有限制,组播地址也有类似于192.168.0.0网络地址的,只用于局域网,不路由的地址)

相关文章

  • Unity UDP组播

    UDP的组播:服务器接受信息的端口必须和客户端接受信息的socket 端口一致。问:一个Udp Server加入某...

  • 网络通讯

    UDP UDP多播 多播(组播)的概念多播,也称为“组播”,将网络中同一业务类型主机进行了逻辑上的分组,进行数据收...

  • UDP组播

    使用哪种协议实现 udp 不用保证数据可靠性,传输速度快;并且一般tcp是不用于多播场景的;那使用udp如何实现呢...

  • UDP

    Linux C编程 socket——Udp组播(多播)[https://www.jianshu.com/write...

  • UDP组播 socket

    相关概念: 单播、多播(组播)和广播的区别 http://blog.csdn.net/wangerge/artic...

  • iOS UDP组播

    组播步骤: 建立socket socket和端口绑定 加入一个组播组 通过sendto / recvfrom进行数...

  • 传输控制协议

    面向连接,可靠,字节流一个连接,只有两方通信UDP可以多播和组播 可靠性: tCP可以决定报文段大小,UDP由上层...

  • 小程序UDP通信

    前言 UDP通信分为单播 广播 组播,基础库2.7.0之后,小程序开始支持UDP通信,目前小程序只支持单播。 小程...

  • JAVA UDP组播绑定网卡发送消息,一般情况下都有效果

    JAVA UDP组播绑定网卡发送消息,一般情况下都有效果

  • flutter udp multicast 组播

    写这篇文章的缘由:在Android原生端,iOS原生端,实现udp 组播相信很多小伙伴都会的,但在flutter ...

网友评论

      本文标题:Unity UDP组播

      本文链接:https://www.haomeiwen.com/subject/dtedoxtx.html