C# UDP通讯实例
1、发送方代码
void SendMsg(string toip, int port )
{
try
{
string message="发送内容";
UdpClient udpclient = new UdpClient();
IPEndPoint ipendpoint = new IPEndPoint(IPAddress.Parse(ip), port); byte[] data = Encoding.Default.GetBytes(message);
udpclient.Send(data, data.Length, ipendpoint);
udpclient.Close(); }
catch (Exception ex)
{ MessageBox.Show("UDP发送数据" + ex.ToString());
} }
2、接收方代码
public UdpService udp; a>实例化、初始化接收事件 udp = new UdpService(fromip, , "127.0.0.1", );
udp.EvtGetValues+=new UdpService.GetRecevice(udp_EvtGetValues); b>启动UDP udp.TurnOn(); c>停止UDP udp.TurnOff(); d>接收事件处理
void udp_EvtGetValues(byte[] ReceviceBuff)
{
//string message = Encoding.UTF8.GetString(ReceviceBuff, 0, ReceviceBuff.Length);
//可接收中文内容
Encoding ei=Encoding.GetEncoding();
string message = ei.GetString(ReceviceBuff, , ReceviceBuff.Length);
if (message.Length > )
{
// 处理接收逻辑 } }
3、UdpService代码
public class UdpService
{
#region 内部变量 string devIP = "127.0.0.1";
int devPort = ;
UdpClient mySocket;
string meIP = "127.0.0.1";
int mePort = ;
IPEndPoint RemotePoint;
bool isRunning = false;
bool isOpen = false;
List<Thread> listThread = new List<Thread>();
string icId = "";
string cardContent = "";
byte[] cardContentBuf;
#endregion public UdpService(string ServerIP, int ServerPort, string DevIP, int DevPort)
{
this.meIP = ServerIP;
this.mePort = ServerPort;
this.devIP = DevIP;
this.devPort = DevPort; } #region public void TurnOn()
{
try
{
if (isOpen) return;
mySocket = new UdpClient(mePort);
IPEndPoint ipLocalPoint = new IPEndPoint(IPAddress.Parse(meIP), mePort); RemotePoint = new IPEndPoint(IPAddress.Any, devPort); isRunning = true;
Thread thread = new Thread(new ThreadStart(this.ReceiveHandle));
thread.IsBackground = true;
thread.Start();
listThread.Add(thread);
isOpen = true; }
catch (Exception ex)
{
isOpen = false;
throw new Exception(ex.Message);
}
} public void TurnOff()
{
try
{
isOpen = false;
isRunning = false; for (int i = ; i < listThread.Count; i++)
{
try
{
listThread[i].Abort();
}
catch (Exception) { }
} if (mySocket != null)
{
mySocket.Close();
}
}
catch (Exception)
{
}
} public delegate void GetRecevice(byte[] ReceviceBuff);
public event GetRecevice EvtGetValues;
private void ReceiveHandle()
{
byte[] sendbuf = new byte[];
byte[] sendwritbuf = new byte[]; while (isRunning)
{
try
{
if (mySocket == null || mySocket.Available < )
{
Thread.Sleep();
continue;
}
//接收UDP数据报,引用参数RemotePoint获得源地址
byte[] buf = mySocket.Receive(ref RemotePoint);
if (devIP == null || devIP.Length < )
{
devIP = RemotePoint.Address.ToString();
devPort = RemotePoint.Port;
}
if (EvtGetValues != null)
{
EvtGetValues(buf);
}
}
catch (Exception)
{
}
}
}
#endregion
}
C# UDP通讯实例的更多相关文章
- JAVA之旅(三十二)——JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用
JAVA之旅(三十二)--JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用 GUI写到一半电脑系统挂了,也就算了,最多GUI还有一个提示框和实例, ...
- java基础55 UDP通讯协议和TCP通讯协议
本文知识点(目录): 1.概述 2.UDP通讯协议 3.TCPP通讯协议 1.概述 1.在java中网络通讯作为Socket(插座)通讯,要求两台都必须安装socket. 2.不同的 ...
- UDP通讯
上一篇有说到TCP通讯,这篇来谈谈UDP通讯方式 基于Udp协议是无连接模式通讯,占用资源少,响应速度快,延时低.至于可靠性,可通过应用层的控制来满足.(不可靠连接) (1).建立一个套接字(Sock ...
- UDP通讯程序设计
UDP通讯程序设计 一.函数化 1.1服务器使用的函数 创建socket----->socket 绑定地址-------->bind 接受数据-------->recvfrom 发送 ...
- C#中的TCP通讯与UDP通讯
最近做了一个项目,主要是给Unity3D和实时数据库做通讯接口.虽然方案一直在变:从开始的UDP通讯变为TCP通讯,然后再变化为UDP通讯;然后通讯的对象又发生改变,由与数据库的驱动进行通讯(主动推送 ...
- 在windows下用C语言写socket通讯实例
原文:在windows下用C语言写socket通讯实例 From:Microsoft Dev Center #undef UNICODE #define WIN32_LEAN_AND_MEAN #in ...
- LWIP裸机环境下实现TCP与UDP通讯
前面移植了LWIP,并且简单的实用了DHCP的功能,今天来使用一下实际的数据通讯的功能 首先是实现TCP客户端,我先上代码 #ifndef __TCP_CLIENT_H_ #define __TCP_ ...
- LWIP裸机环境下实现TCP与UDP通讯(转)
源: LWIP裸机环境下实现TCP与UDP通讯
- QUdpSocket-Qt使用Udp通讯实现服务端和客户端
版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:QUdpSocket-Qt使用Udp通讯实现服务端和客户端 本文地址:https:// ...
随机推荐
- eclipse、myeclipse使用常用的小技巧
1.修改类名称上的@author *** Preference----Java----Code Style----Code Templates----->Comments----->Ty ...
- Memcached笔记——(二)XMemcached&Spring集成
今天研究Memcached的Java的Client,使用XMemcached 1.3.5,做个简单的测试,并介绍如何与Spring集成. 相关链接: Memcached笔记--(一)安装&常规 ...
- OpenSSL 生成自定义证书
前言 本文用来记录通过OpenSSL生成自定义证书并在浏览器设置可信任 准备 Linux CentOS7 系统 nginx 1.12.2 Windows 10 IE 11 chrome 71 Open ...
- ZeroMQ,史上最快的消息队列
一.ZMQ 是什么 阅读了 ZMQ 的 Guide 文档后,我的理解是,这是个类似于 Socket 的一系列接口,他跟 Socket 的区别是:普通的 socket 是端到端的(1:1的关系),而 Z ...
- 使用hexo,创建博客
下载hexo工具 1 npm install hexo-cli -g 下载完成后可以在命令行下生成一个全局命令hexo搭建博客可用thinkjs 创建一个博客文件夹 1 hexo init 博客文件夹 ...
- JSON parse error: Cannot deserialize value of type `java.util.Date` from String
DateTimePicker + @DateTimeFormat("yyyy-MM-dd HH:mm:ss")日期格式转换异常 最近在做的一个项目使用的日期格式是yyyy-MM-d ...
- IDEA中有哪些让你相见恨晚的技巧?
本期让我们来盘点一下,idea中有哪些在提高开发效率上相见恨晚的技巧. 自动补全代码抽取编辑代码块代码模板 自动补全 1.快速输出 2.快速定义成员变量3.快速格式化4.快速判空5.快速取反6.快速返 ...
- 蚂蚁金服开源 | 可视化图形语法G2 3.3 琢磨
G2 是蚂蚁金服数据可视化解决方案 AntV 的一个子产品,是一套数据驱动的.高交互的可视化图形语法. 经过两个多月密锣紧鼓的开发,400+次提交,G2 3.3版本今天终于和大家见面了.自上次3.2版 ...
- Javascript元编程之Annotation
语言的自由度 自由度这个概念在不同领域有不同的定义,我们借鉴数学中构成一个空间的维数来表达其自由度的做法,在此指的是:解决同一个问题彼此不相关的设计方法学数量. 例如,解决一个比如商品打折的问题,如何 ...
- js数组冒泡排序、快速排序、插入排序
1.冒泡排序 //第一种 function bubblesort(ary){ for(var i=0;i<ary.length-1;i++){ for(var j=0;j<ary.leng ...