这里创建一个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窗体美化方法,你可以根据自己的需求选择合适的方法来实现。希望对你有所帮助!如果你还有其他问题,请随时提问。