资源简介
一个C#编写的UDP通信实例,在两个不同的电脑上打开项目,可以进行通信。测试用,能实现我方发送,对方接收,同时我方屏幕也记录发送数据,类似于聊天环境。
代码片段和文件信息
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;
/* UDP通信原理:
* 使用UDP通信没有服务器和客户端的区别,双方是平等的。我和对方在通信时,我和对方的接收和发送数据的模式一模一样。
* 以下从我的角度,说明通信的模式:
* 我在我的IP地址下,指定一个端口,我用这个端口进行数据的收和发;
* 接收的过程是持续性的,我每时每刻都在查询我的这个端口上是否有数据过来,有的话就放在Thread上,即接收下来,不区分是谁发过来的,不考虑是否和对方建立了连接。
* 接收下来的UDP数据报,我对它进行解码,之后进行显示等操作。
* 发送的过程是我控制的,我想发给谁,只要指定接收人的IP地址和端口,我把数据进行编码,以UDP数据报的形式发出去就好了。 */
namespace UDPClient_Server
{
public partial class UDPForm : Form
{
public string recvData=““; //接收到的数据初始化
public static string IP_Local; //公共静态本机IP地址
public static int Port_Local; //公共静态本机接收和发送的端口
public static UdpClient recvClient; //UDP数据报接收服务
public static Thread recThread; //线程;用于接收数据而启用的
public UDPForm()
{
InitializeComponent();
}
private void btnSend_Click(object sender EventArgs e) //发送数据
{
if (string.IsNullOrWhiteSpace(txtRemoteIP.Text.Trim()) || string.IsNullOrWhiteSpace(txtRemotePort.Text.Trim()))
{
MessageBox.Show(“请输入接收方“);
}
else if (string.IsNullOrWhiteSpace(rtxtSend.Text.Trim()))
{
MessageBox.Show(“请输入发送内容“);
}
else
{
string senddata = rtxtSend.Text;
byte[] sendData = Encoding.Default.GetBytes(senddata); //将要发送的数据进行编码
int sendLen = sendData.Length;
UdpClient sendClient = new UdpClient(); //UDP数据报发送服务
string IP_Remote = txtRemoteIP.Text;
int Port_Remote = Convert.ToInt32(txtRemotePort.Text);
sendClient.Send(sendData sendLen new IPEndPoint(IPAddress.Parse(IP_Remote) Port_Remote)); //发送给指定接收的IP及其端口
rtxtRec.Text += “我:“ + senddata+ “\r\n“;
rtxtSend.Clear();
sendClient.Close(); //结束UDP数据报发送服务
}
}
private void timer1_Tick(object sender EventArgs e) //定时器,持续性对有无收到数据进行查询
{
timer1.Enabled = false;
if (recvData.Length > 0) //有数据就显示,显示后就将数据清空,防止重复显示
{
rtxtRec.Text += “对方:“ + recvData + “\r\n“;
recvData = ““;
}
timer1.Enabled = true;
}
private void btnServer_Click(object sender EventArgs e)
{
IP_Local = txtLocateIP.Text;
Port_Local = Convert.ToInt32(txtLocatePort.Text);
recvClient = new UdpClient(Port_Local); //指定一个端口,进行UDP数据报接收服务
recThread = new Thread(Rec_Data); //指定线程要接收来自指定端口的数据
void Rec_Data()
{
IPEndPoint Remoteip = new IPEndPoint(IPAddress.Any Port_Local)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
..A..H. 80384 2018-12-03 16:45 UDPClient_Server\.vs\UDPClient_Server\v15\.suo
文件 0 2018-11-24 17:04 UDPClient_Server\.vs\UDPClient_Server\v15\Server\sqlite3\db.lock
文件 593920 2018-11-30 19:39 UDPClient_Server\.vs\UDPClient_Server\v15\Server\sqlite3\storage.ide
文件 32768 2018-12-03 16:41 UDPClient_Server\.vs\UDPClient_Server\v15\Server\sqlite3\storage.ide-shm
文件 0 2018-12-03 16:29 UDPClient_Server\.vs\UDPClient_Server\v15\Server\sqlite3\storage.ide-wal
文件 189 2018-11-24 17:04 UDPClient_Server\UDPClient_Server\App.config
文件 12800 2018-12-03 16:42 UDPClient_Server\UDPClient_Server\bin\Debug\UDPClient_Server.exe
文件 189 2018-11-24 17:04 UDPClient_Server\UDPClient_Server\bin\Debug\UDPClient_Server.exe.config
文件 32256 2018-12-03 16:42 UDPClient_Server\UDPClient_Server\bin\Debug\UDPClient_Server.pdb
文件 4888 2018-12-03 16:45 UDPClient_Server\UDPClient_Server\Form1.cs
文件 11754 2018-11-26 17:16 UDPClient_Server\UDPClient_Server\Form1.Designer.cs
文件 6011 2018-11-26 17:16 UDPClient_Server\UDPClient_Server\Form1.resx
文件 1443 2018-11-24 18:56 UDPClient_Server\UDPClient_Server\obj\Debug\DesignTimeResolveAssemblyReferences.cache
文件 7373 2018-11-25 19:44 UDPClient_Server\UDPClient_Server\obj\Debug\DesignTimeResolveAssemblyReferencesInput.cache
文件 0 2018-11-24 17:04 UDPClient_Server\UDPClient_Server\obj\Debug\TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
文件 0 2018-11-24 17:04 UDPClient_Server\UDPClient_Server\obj\Debug\TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
文件 0 2018-11-24 17:04 UDPClient_Server\UDPClient_Server\obj\Debug\TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
文件 42 2018-11-24 17:04 UDPClient_Server\UDPClient_Server\obj\Debug\UDPClient_Server.csproj.CoreCompileInputs.cache
文件 1387 2018-11-26 15:46 UDPClient_Server\UDPClient_Server\obj\Debug\UDPClient_Server.csproj.FileListAbsolute.txt
文件 1012 2018-11-26 17:16 UDPClient_Server\UDPClient_Server\obj\Debug\UDPClient_Server.csproj.GenerateResource.cache
文件 11490 2018-11-24 17:04 UDPClient_Server\UDPClient_Server\obj\Debug\UDPClient_Server.csprojAssemblyReference.cache
文件 12800 2018-12-03 16:42 UDPClient_Server\UDPClient_Server\obj\Debug\UDPClient_Server.exe
文件 32256 2018-12-03 16:42 UDPClient_Server\UDPClient_Server\obj\Debug\UDPClient_Server.pdb
文件 180 2018-11-26 17:44 UDPClient_Server\UDPClient_Server\obj\Debug\UDPClient_Server.Properties.Resources.resources
文件 180 2018-11-26 17:44 UDPClient_Server\UDPClient_Server\obj\Debug\UDPClient_Server.UDPForm.resources
文件 530 2018-11-24 17:05 UDPClient_Server\UDPClient_Server\Program.cs
文件 1330 2018-11-24 17:04 UDPClient_Server\UDPClient_Server\Properties\AssemblyInfo.cs
文件 2845 2018-11-24 17:04 UDPClient_Server\UDPClient_Server\Properties\Resources.Designer.cs
文件 5612 2018-11-24 17:04 UDPClient_Server\UDPClient_Server\Properties\Resources.resx
文件 1103 2018-11-24 17:04 UDPClient_Server\UDPClient_Server\Properties\Settings.Designer.cs
............此处省略19个文件信息
- 上一篇:C#窗体程序读写源码
- 下一篇:C#窗体基于TCP的Socket多线程通信
相关资源
- C# 调用win32 api函数-user32.dll详细说明
- C# 调用BarTender打印条码DEMO
- 大型比赛竞赛抽签系统 可打印 c# vs
- C#编写的Gerber查看器
- lua C# .Net4.0 vs2010 LuaInterface
- C#十六进制编辑器
- 明华URF-35H读卡器 C#读写源码 为大家
- C#文件流读取CSV文件
- c#读写PDF文件sql
- C# winform Socket大文件传输
- c#车牌识别系统附30张测试图片
- 《C#面向对象程序设计》源代码(CS)
- 金旭亮《C#面向对象程序设计》教案
- 试题库管理系统毕业论文(C#)源程序
- 学校网站原代码(C#.NET)
- C#-数据库操作技术-员工管理系统
- c#web开发入门经典
- C#与Matlab混合编程的几种方式
- c# 开发与 mysql数据库实现的增删改查
- C#异步操作 异步查询数据库 异步处理
- Basler相机通过IO触发源码
- [源代码] 《领域驱动设计 (C# 2008 实
- 松下PLC与C#通讯串口调试入门教程.z
- USB 继电器控制器 LCUS-1 保证能用 c#
- C# AES加密解密小工具
- C#圆形按钮,非常漂亮动态~~
- [精]C#仿QQ右下角弹出提示框()
- C#进程间通信-共享内存代码
- 有史以来最简单的三层(C#)
- vb调用c#编写的串口DLL文件(vb源码
评论
共有 条评论