zoukankan      html  css  js  c++  java
  • socket 广播消息

    在 做Socket通信时,了解了客户端向服务器发送消息的

    再来整理服务器向客户端发送广播消息

    服务器端:

     1 using UnityEngine;
     2 using System.Collections;
     3 using System.Net;
     4 using System .Net.Sockets;
     5 using System .Threading;
     6 using System.Text;
     7 
     8 
     9 /*
    10 author:miss li
    11 use for;
    12 */
    13 namespace LMQ{
    14 public class Server : MonoBehaviour 
    15 {
    16         Socket socket;
    17         IPEndPoint ipEnd;
    18         byte[] data;
    19         string hostname;
    20 
    21         void Init()
    22         {
    23             socket = new Socket (AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
    24             ipEnd = new IPEndPoint (IPAddress.Broadcast, 8001);
    25             hostname = Dns.GetHostName ();
    26             data = Encoding.ASCII.GetBytes (hostname);
    27             socket.SetSocketOption (SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1);
    28             Thread t = new Thread (BroadcastMessage);
    29             t.Start ();
    30         }
    31 
    32     void Awake()
    33     {
    34     
    35     }
    36         void Start () 
    37     {
    38             Init ();
    39     }
    40     
    41         void BroadcastMessage()
    42         {
    43             while (true) {
    44 //                data = new byte[1024];
    45 //                data = Encoding.ASCII.GetBytes (hostname);
    46                 socket.SendTo (data, ipEnd);
    47                 Thread.Sleep (2000);
    48             
    49 
    50 
    51             }
    52         }
    53 
    54         void BroadcastMessage(string hostname)
    55         {
    56             while (true) {
    57                 data = new byte[1024];
    58                 data = Encoding.ASCII.GetBytes (hostname);
    59                 socket.SendTo (data, ipEnd);
    60                 Thread.Sleep (2000);
    61             }
    62             
    63         }
    64         //void OnGUI()
    65         //{
    66         //    hostname = GUI.TextField(new Rect(100, 50, 60, 30), hostname);
    67         //    if (GUI.Button(new Rect(100, 90, 60, 30), "send"))
    68         //    {
    69         //        BroadcastMessage(hostname);
    70         //    }
    71         //}
    72 
    73        
    74 }
    75 }

    客户端:

    using UnityEngine;
    using System.Collections;
    using System .Net;
    using System.Net.Sockets;
    using System .Threading;
    using System.Text;
    
    /*
    author:miss li
    use for;
    */
    namespace LMQ{
    public class Client : MonoBehaviour 
    {
            Socket socket;
            IPEndPoint ipEnd;
            EndPoint End;
            byte[] data;
            int recv;
            string stringdata;
    
            void Init()
            {
                socket = new Socket (AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
                ipEnd = new IPEndPoint (IPAddress.Any, 8001);
                socket.Bind (ipEnd);
                End = (EndPoint)ipEnd;
                Thread t = new Thread (ReceiveData);
                t.Start ();
    
            }
    
    
            void ReceiveData()
            {
                data = new byte[1024];
                recv = socket.ReceiveFrom (data, ref End);
                stringdata = Encoding.ASCII.GetString (data, 0, recv);
                print ("received: " + stringdata + " form " + End.ToString ());
                socket.Close ();
            }
        
            void Start () 
        {
                Init ();
        }
        
            
    }
    }

    当服务器端服务开启之后,客户端就会收到服务器端发送的广播消息,

    同样的,服务端和客户端的端口号都需要保持一致

  • 相关阅读:
    【python ----集合练习】
    【python ---字典练习】索引 增删改 嵌套
    词频统计
    枚举
    【python--集合】增删改 交集 差集 并集 反交集 子集和超集
    迭代器和迭代对象 生成器 推导式
    tuple 元组
    【python--字典】 字典的拆包
    Python -- 函数
    Python -- 文件的copy以及读写
  • 原文地址:https://www.cnblogs.com/MissLi/p/6946014.html
Copyright © 2011-2022 走看看