吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1792|回复: 10
收起左侧

[求助] C#局域网广播

[复制链接]
头像被屏蔽
lizf2020 发表于 2020-8-15 18:42
提示: 作者被禁止或删除 内容自动屏蔽

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

BEASTARS 发表于 2020-8-15 18:50
。。这个我之前上课做过,一个简单的广播,我找一下
BEASTARS 发表于 2020-8-15 18:56

只能找到当初的代码了。。控件看着代码搭配就好了(lll¬ω¬)


using System;
using System.Text;
using System.Net;
using System.Threading;
using System.Net.Sockets;
using System.Windows.Forms;

namespace _广播_
{
    public partial class Form1 : Form
    {
        UdpClient udp;
        private const int port = 9999;
        private volatile bool IsStop = true;
        public delegate void AddMessage(string str);
        public void AddString(string str)
        {
            listBox1.Items.Add(str);
        }
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            try
            {
                udp = new UdpClient(port);
                Thread d = new Thread(ReceiveData);
                IsStop = false;
                d.IsBackground = true;
                d.Start();
            }
            catch
            {
                MessageBox.Show("绑定错误!");
                Close();
            }
        }
        public void ReceiveData()
        {
            AddMessage a = new AddMessage(AddString);
            while(!IsStop)
            {
                try
                {
                    IPEndPoint remote = new IPEndPoint(IPAddress.Broadcast, 0);
                    byte[] bys = udp.Receive(ref remote);
                    string s = textBox1.Text + ":" + port;
                    if (s != remote.ToString())
                    {
                        string message = remote.ToString() + "说:" + Encoding.GetEncoding("gb2312").GetString(bys);
                        listBox1.Invoke(a, message);
                    }
                }
                catch
                {

                }
             }
        }
        private void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void Button1_Click(object sender, EventArgs e)
        {
            if(richTextBox1.Text != "")
            {
                byte[] bys = Encoding.GetEncoding("gb2312").GetBytes(richTextBox1.Text);
                udp.Send(bys, bys.Length, new IPEndPoint(IPAddress.Broadcast, port));
                // listBox1.Items.Add("我说:" + richTextBox1.Text);
                richTextBox1.Clear();
            }else
            {
                MessageBox.Show("请输入内容!");
            }
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            IsStop = true;
            Thread.Sleep(1000);
            if (udp != null)
                udp.Close();
        }

        private void Button2_Click(object sender, EventArgs e)
        {
            listBox1.Items.Clear();
        }
    }
}

免费评分

参与人数 1热心值 +1 收起 理由
lizf2020 + 1 谢谢

查看全部评分

Raohz520 发表于 2020-8-15 19:28
用 UDP 去广播
呃呃呃,用线程去执行这个操作
JuncoJet 发表于 2020-8-15 19:33
ZeroMQ了解一下
zsxxdd 发表于 2020-8-15 19:56
多谢!!学习中!!
头像被屏蔽
 楼主| lizf2020 发表于 2020-8-17 09:51
提示: 作者被禁止或删除 内容自动屏蔽
fabulousElena 发表于 2020-8-17 12:11
用socket写,很简单的。
头像被屏蔽
 楼主| lizf2020 发表于 2020-8-18 17:39
提示: 作者被禁止或删除 内容自动屏蔽
fabulousElena 发表于 2020-8-18 18:29
本帖最后由 fabulousElena 于 2020-8-18 18:34 编辑
lizf2020 发表于 2020-8-18 17:39
大佬可否指点写代码

https://cdn.jsdelivr.net/gh/fabulousElena/PicGo/file/ChatDemoWithSocket.7z

这是之前写的源码。。你改一下就可以变成你需要的了。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 14:34

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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