相关文章推荐
瘦瘦的自行车  ·  Visual Studio 2022 ...·  1 年前    · 
文雅的移动电源  ·  Promise { pending ...·  1 年前    · 

这里创建一个Sockets端口号为8998   该端口是接收数据的端口可以自行更改

点击UdpClient,点击显示可能的修补程序,点击using System.Net.Sockets;

这样包含了Sockets的命名空间就不会再报错了

在Form1的构造函数内添加

 CheckForIllegalCrossThreadCalls = false;//在其他线程中可以调用主窗体控件

如图所示:

接下来创建一个线程:

 Thread js = new Thread(()=>

这里可能Thread会报错,点开可能的修补程序:

选择 using System.Threading;  这样就不会报错了

在线程的构造函数里添加:   这是后面Receive方法所需要的参数

IPEndPoint ipendpoint = new IPEndPoint(IPAddress.Any, 8998); //创建IPEndPoint对象,用来显示响应主机的标识

可能IPEndPoint会显示错误 还是命名空间的问题 点击显示可能修补的程序添加命名空间即可

接下来就是接收消息过程:

while (true)
                        if (udp.Available <= 0) continue;//判断是否有网络数据
                        if (udp.Client == null) return;//判断连接是否为空
                                                       //调用UdpClient对象的Receive方法获得从远程主机返回的UDP数据报
                        byte[] bytes = udp.Receive(ref ipendpoint);
                        //将获得的UDP数据报转换为字符串形式
                        string str = Encoding.Default.GetString(bytes);
                        //textBox2.Text = "正在接收的信息:\n" + str;//显示正在接收的数据
                        textBox2.Text += "\n" + str;//显示接收的所有数据
                    catch (Exception ex)
                        MessageBox.Show(ex.Message);//错误提示
                    Thread.Sleep(2000);//线程休眠2秒

这里大家可以根据注释自己理解一下 

在后面再添加一句: 开启线程

js.Start();

至此,接收部分的功能就已经实现:

接下来就是实现发送功能:

因为是要点击发送按钮才进行发送数据,所以我们在按键的点击事件函数中实现发送功能:

首先回到界面,双击Button按键进入Button的点击事件函数:

该函数会在Button被点击后系统调用

因为已经在创建了一个全局的UdpClient对象

所以在这里可以直接调用:

udp.Connect("127.0.0.1", 8888);

这个方法有点像是TCP的连接对方Sockets,参数输入对方的IP和端口

接下来就是发送数据了:

Thread fs = new Thread(() =>
                while (true)
                        if (textBox1.Text != null)
                            Byte[] sendBytes = Encoding.Default.GetBytes(textBox1.Text);
                            udp.Send(sendBytes, sendBytes.Length);
                    catch
                        break;
            fs.Start();

创建一个新线程  首先判断textBox里面是否有东西,如果有东西就对内容进行编码,然后使用Send发送出去

到这里就已经实现了发送和接收功能,我们运行试验一下结果:

结果是正确的

这里如果觉得接收数据显示的格式不好看可以在js线程的参数里进行修改

该程序只是简单实现UDP的数据收发,不是非常完善,有兴趣可以再添加两个TextBox来输入IP和端口,这样程序就更实用。

首先启动Visual Studio(以2017版为例):新建一个点击新建一个项目找到C#的Windows窗体应用项目,可以在下方更改项目名称和存储路径:解决方案名称和.net框架默认的就可以创建成功后:首先在视图里面打开工具箱:点击后就可以看到工具箱:在控件中找到TextBox:按住鼠标左键拖到Form窗体上再拖出一个TextBox到窗体(方法如上)然后拖出两个Label:再拖出一个button最后界面. 发的都是亲自测验,有效! 绝对不是臭鱼烂虾! 目前,UDP本人亲自用过的场景,客户端和服务端需要进行数据传输,但是服务端,在开始时是连接的别的网络,切换过来之后,并不能知道当前的一个具体的IP地址。但是客户端的IP地址是固定的,此种场景下,服务端网络切换过来之后,建立UDP服务端,像指定的客户端(IP地址和端口号)发送数据,即可知道当前服务端的ip地址。 服务端界面 using UDP和TCP是网络通讯常用的两个传输协议C#一般可以通过Socket来实现UDP和TCP通讯,由于.NET框架通过UdpClient、TcpListener 、TcpClient这几个类对Socket进行了封装,使其使用更加方便, 本文就通过这几个封装过的类讲解一下相关应用。 二、UDP基本应用 与TCP通信不同,UDP通信是不分服务端和客户端的,通信双方是对等的。为了描述方便,我们把通信双方称为发送方和接收方。 首先创建一个UDP对象: string locateIP = "127
C#使用TCP/UDP协议通信1.控制台程序使用 UDP 通信创建项目单输出代码使用 UDP 通信发送端接收端结果Form窗口程序使用 TCP 通信 1.控制台程序使用 UDP 通信 实验内容:用C#、Java或python编写一个命令行/控制台的简单hello world程序,实现如下功能: 在屏幕上连续输出50行“hello cqjtu!重交物联2019级” 同时打开一个网络UDP 套接字,向另一台室友电脑发送这50行消息 打开 VS2019 ,点击 “ 创建新项目 ” 进行条件筛
1. 使用自定义样式和主题: - 首先,你可以通过修改窗体的外观来实现美化效果。你可以更改窗体的背景颜色、边框样式等,以使其符合你的设计需求。 - 其次,你可以使用自定义的图像作为窗体的背景,可以是纯色背景或者是渐变色背景。 - 此外,你还可以使用自定义的图标来替换窗体的默认图标。 2. 使用第三方UI库: - 除了自定义样式,你还可以使用第三方UI库来美化你的WinForms应用程序。这些库提供了许多预先设计好的控件和主题,可以让你的应用程序拥有更现代和吸引人的界面。 - 一些常见的第三方UI库包括:DevExpress、Telerik、Syncfusion等。这些库提供了大量的控件和样式选项,可以帮助你快速实现窗体美化效果。 以上是两种常见的C# WinForms窗体美化方法,你可以根据自己的需求选择合适的方法来实现。希望对你有所帮助!如果你还有其他问题,请随时提问。