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通讯实例的更多相关文章

  1. JAVA之旅(三十二)——JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用

    JAVA之旅(三十二)--JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用 GUI写到一半电脑系统挂了,也就算了,最多GUI还有一个提示框和实例, ...

  2. java基础55 UDP通讯协议和TCP通讯协议

    本文知识点(目录): 1.概述    2.UDP通讯协议    3.TCPP通讯协议 1.概述 1.在java中网络通讯作为Socket(插座)通讯,要求两台都必须安装socket.    2.不同的 ...

  3. UDP通讯

    上一篇有说到TCP通讯,这篇来谈谈UDP通讯方式 基于Udp协议是无连接模式通讯,占用资源少,响应速度快,延时低.至于可靠性,可通过应用层的控制来满足.(不可靠连接) (1).建立一个套接字(Sock ...

  4. UDP通讯程序设计

    UDP通讯程序设计 一.函数化 1.1服务器使用的函数 创建socket----->socket 绑定地址-------->bind 接受数据-------->recvfrom 发送 ...

  5. C#中的TCP通讯与UDP通讯

    最近做了一个项目,主要是给Unity3D和实时数据库做通讯接口.虽然方案一直在变:从开始的UDP通讯变为TCP通讯,然后再变化为UDP通讯;然后通讯的对象又发生改变,由与数据库的驱动进行通讯(主动推送 ...

  6. 在windows下用C语言写socket通讯实例

    原文:在windows下用C语言写socket通讯实例 From:Microsoft Dev Center #undef UNICODE #define WIN32_LEAN_AND_MEAN #in ...

  7. LWIP裸机环境下实现TCP与UDP通讯

    前面移植了LWIP,并且简单的实用了DHCP的功能,今天来使用一下实际的数据通讯的功能 首先是实现TCP客户端,我先上代码 #ifndef __TCP_CLIENT_H_ #define __TCP_ ...

  8. LWIP裸机环境下实现TCP与UDP通讯(转)

    源: LWIP裸机环境下实现TCP与UDP通讯

  9. QUdpSocket-Qt使用Udp通讯实现服务端和客户端

    版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:QUdpSocket-Qt使用Udp通讯实现服务端和客户端     本文地址:https:// ...

随机推荐

  1. Ruby爬虫header发送cookie,nokogiri解析html数据

    之前用php写过一个爬虫,同样是获取局域网的网站数据,这次我使用相同的网络环境,更低的电脑配置,使用ruby来再次爬虫,惊人的发现ruby使用自带的类库net/http爬取速度要远远超过php的cur ...

  2. Leetcode 946. Validate Stack Sequences 验证栈序列

    946. Validate Stack Sequences 题目描述 Given two sequences pushed and popped with distinct values, retur ...

  3. 蚂蚁金服招聘-无线测试开发(20k-36k/月)

    蚂蚁金服-支付宝国际事业部-高级测试开发工程师/测试专家 工作年限:三年以上学历要求:本科期望层级:P6/P7工作地点:上海,杭州,深圳等为什么选择加入我们? 我们的岗位有何不同?1.国际化远景:随着 ...

  4. cordova+jquery form上传里面的一些诡异坑

    在浏览器里面执行很正常的代码,打包到手机上测试就出问题了,浏览器中的执行版本如下: <!DOCTYPE html> <html lang="en"> < ...

  5. 移动端使用mint-ui组件loadmore填坑

      链接地址为 https://mint-ui.github.io/docs/#/en2/loadmore ,这里需要注意引入的方式,我这里是用cdn的方式引入的.请结合官方API阅读本文章. 2.在 ...

  6. 原创:Python爬虫实战之爬取美女照片

    这个素材是出自小甲鱼的python教程,但源码全部是我原创的,所以,猥琐的不是我 注:没有用header(总会报错),暂时不会正则表达式(马上要学了),以下代码可能些许混乱,不过效果还是可以的. 爬虫 ...

  7. async/await实现图片的串行、并行加载

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. USB小白学习之路(10) CY7C68013A Slave FIFO模式下的标志位(转)

    转自良子:http://www.eefocus.com/liangziusb/blog/12-11/288618_bdaf9.html CY7C68013含有4个大端点,可以用来处理数据量较大的传输, ...

  9. Swift和Objective-C中的协议(protocol)有什么异同

    Swift和Objective-C中的protocol的相同点在于:两者可以被用作代理.Objective-C中的protocol类似于Java中的Interface,在实际开发中主要用与适配器模式( ...

  10. 网络|Trojan 网络代理服务搭建

    Trojan 网络代理服务搭建 前言 本文目的在于帮助相同困惑的网友,让使用更加简单. Trojan为Trojan-GFW开源的一款新思路网络代理软件, 前期准备 [x] 服务器:系统CentOS 7 ...