我是靠谱客的博主 听话蜻蜓,最近开发中收集的这篇文章主要介绍c#udp通讯之服务器及客户端,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Udp通讯之服务器及客户端
我坚信付出不一定有回报,但是不付出绝对没有回报,给我选,我毫无办法,只能选择付出,不为别的,只为看到明天冉冉东升的朝阳。废话少说,先从服务器说起
--------udp通讯之服务器
在这里插入图片描述

Udp通讯连接非常之简单

先声明几个通用变量

    UdpClient client = null;
    string receiveString = null;
    byte[] receiveData = null;
    IPEndPoint remotePoint = new IPEndPoint(IPAddress.Any, 0);

然后开启服务器,进行数据接收

private void button1_Click(object sender, EventArgs e)
    {
        //
       displayMsg("服务器启动完毕,等待接收数据。。。");
        Thread td1 = new Thread(()=> {
            while (true)
            { 
                receiveData = client.Receive(ref remotePoint);//接收数据
                receiveString = Encoding.Default.GetString(receiveData);
                displayMsg(remotePoint+"接收到的数据为:" + receiveString);
            }
        });
        td1.IsBackground = true;
        td1.Start();
        button1.Enabled = false;
    }

然后向客户端发送数据

    private void button2_Click(object sender, EventArgs e)
    {
        //发送数据
        if (!button1.Enabled&&client!=null)
        {
            string msg = textBox1.Text.Trim();
            byte[] buffer = Encoding.Default.GetBytes(msg);
            client.Send(buffer,buffer.Length,remotePoint);
            msg = remotePoint.ToString() + "发送的数据为:" + msg;
            displayMsg(msg);
        }
    }

最后做一个数据输出到文本的功能

    private void displayMsg(string msg)
    {
        msgDisplay.Invoke(new Action<string>((s)=> {
            msgDisplay.AppendText(s+"rn");

        }),msg);
    }

大功告成。。。。

--------服务器来了,那就再来一个客户端吧
在这里插入图片描述

老规矩,先来几个公共变量吧

    UdpClient client = null;
    IPEndPoint remotePoint;
    bool flag = false;

下面就该数据发送了

    private void button1_Click(object sender, EventArgs e)
    {
        try
        {
                
                byte[] sendData = Encoding.Default.GetBytes(textBox2.Text.Trim());
                client.Send(sendData, sendData.Length, remotePoint);
                string msg = "发送的数据为:" + remotePoint + "-->" +client+":"+ Encoding.Default.GetString(sendData);
                msgDisplay(msg);
            //    msgDisplay(Encoding.Default.GetString(client.Receive(ref remotePoint)));
            //flag = true;
        }
        catch(Exception ex)
        {
            msgDisplay(ex.ToString());
        }
    }

//在就是一个数据循环接收的程序

private void button2_Click(object sender, EventArgs e)
    {
        msgDisplay("数据循环接收开启。。。");
        Thread td2 = new Thread(()=> {
            while (true)
            {
                try
                {
                    msgDisplay(Encoding.Default.GetString(client.Receive(ref remotePoint)));
                }
                catch
                {
                    Thread.Sleep(1000);
                    msgDisplay("服务器未开启,");
                   // break;
                }
            }

        });
        td2.IsBackground = true;
        td2.Start();
    }

你说要不要搞个数据显示的程序呢 ?那是必须的

    private void msgDisplay(string v)
    {
        textBox1.Invoke(new Action<string>((str)=> {
            textBox1.AppendText(str+"rn");
        }),v);
    }

现在应该没有什么话说了把,完美解决!

最后

以上就是听话蜻蜓为你收集整理的c#udp通讯之服务器及客户端的全部内容,希望文章能够帮你解决c#udp通讯之服务器及客户端所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部