• 用UDP协议发送广播


    服务器端:发送消息
    
    private void button1_Click(object sender, EventArgs e)
            {
                //只能用UDP协议发送广播,所以ProtocolType设置为UDP
                Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
                //让其自动提供子网中的IP地址
                //IPEndPoint iep = new IPEndPoint(IPAddress.Parse("192.168.1.13"), 8090);//IPAddress.Broadcast
                IPEndPoint iep = new IPEndPoint(IPAddress.Broadcast, 8090);//IPAddress.Broadcast
                //设置broadcast值为1,允许套接字发送广播信息
                socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1);
                //将发送内容转换为字节数组
                byte[] bytes = System.Text.Encoding.Unicode.GetBytes(this.textBox1.Text);
                //向子网发送信息
                socket.SendTo(bytes, iep);
                socket.Close();
            }
    客户端:接收消息
    
    //接收信息
            private void AcceptMessage()
            {
                //d定义socket对象
                Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
                //IPEndPoint iep = new IPEndPoint(IPAddress.Parse("192.168.0.105"), 8090);
                IPEndPoint iep = new IPEndPoint(IPAddress.Any, 8090);
                socket.Bind(iep);
                ep = (EndPoint)iep;
                Console.WriteLine("Ready to receive…");
                byte[] bytes;
                while (true)
                {
                    stringData = "";
                    int recv = 0;
                    bytes = new byte[1024];
                    try
                    {
                        recv = socket.ReceiveFrom(bytes, ref ep);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine("有异常", ex.ToString());
                    }
    
                    //string stringData = Encoding.ASCII.GetString(bytes, 0, recv);
                    stringData = System.Text.Encoding.Unicode.GetString(bytes).TrimEnd('u0000');
                    Console.WriteLine("received: {0} from: {1}", stringData, ep.ToString());
    
                    //socket.ReceiveFrom(bytes, ref ep);
                    //receiveData = System.Text.Encoding.Unicode.GetString(bytes);
                    //receiveData = receiveData.TrimEnd('u0000');
                    //Thread th = new Thread(new ThreadStart(Acc));
                    //th.Start();
                }
                socket.Close();
            }

  • 相关阅读:
    2-5
    2-3
    2-2
    2-1
    1-1
    实验6-1 求数组及其下标
    实验4-2 关于求阶乘的运算
    作业 3-5 switch语句的应用
    作业3-6 查询水果单价
    作业3-4 判断是不是闰年
  • 原文地址:https://www.cnblogs.com/luna-hehe/p/14412510.html
Copyright © 2020-2023  润新知