C#之UDP通信
简介
C#中的udp通信关键类:Udpclient,它位于命名空间System.Net.Sockets中,发送接收都是UdpClient类,
命名空间
using System.Net.Sockets;
using System.Net;
using System.Net.NetworkInformation;
using System.Management;
发送数据
1.Visual C# UdpClient类发送UDP数据包:
在具体使用中,一般分成二种情况:
(1).知道远程计算机IP地址:
"Send"方法的调用语法如下:
参数说明:
dgram 要发送的 UDP 数据文报(以字节数组表示)。
bytes 数据文报中的字节数。
endPoint 一个 IPEndPoint,它表示要将数据文报发送到的主机和端口。
返回值 已发送的字节数。
下面使用UdpClient发送UDP数据包的具体的调用例子:
(2).知道远程计算机名称:
知道远程计算机名称后,利用"Send"方法直接把UDP数据包发送到远程主机的指定端口号上了,这种调用方式也是最容易的,语法如下:
参数说明:
dgram 要发送的 UDP 数据文报(以字节数组表示)。
bytes 数据文报中的字节数。
hostname 要连接到的远程主机的名称。
port 要与其通讯的远程端口号。
返回值 已发送的字节数。
附上发送数据代码如下:
private void btnSend_Click(object sender, EventArgs e)
{
Thread t = new Thread(SendMsg);
t.IsBackground = true;
t.Start(sendText.Text);
}
private void SendMsg( object obj )
{
string message = (string)obj;
SendClient = new UdpClient(0);
byte[] bytes = System.Text.Encoding.UTF8.GetBytes(message);
remoteIp = IPAddress.Parse(remoteIPBox.Text);
IPEndPoint iep = new IPEndPoint(remoteIp,portSend);
try
{
SendClient.Send(bytes, bytes.Length, iep);
AddItem(listBoxstatus, string.Format("向{0}发送:{1}", iep, message)); //异步委托显示数据
clearTextBox();
}
catch(Exception ex)
{
AddItem(listBoxstatus,"发送出错"+ex.Message);
}
}
接收数据
2.Visual C# UdpClient类接收UDP数据包:
接收UDP数据包使用的是UdpClient中的“Receive"方法。
参数说明:
remoteEP 是一个 IPEndPoint类的实例,它表示网络中发送此数据包的节点。
附上接收数据的代码如下:
private void FormChat_Load(object sender, EventArgs e)
{
//创建接收线程
Thread RecivceThread = new Thread(RecivceMsg);
RecivceThread.IsBackground = true;
RecivceThread.Start();
sendText.Focus();
}
private void RecivceMsg()
{
IPEndPoint local = new IPEndPoint(ip,portRecv);
RecviceClient = new UdpClient(local);
IPEndPoint remote = new IPEndPoint(IPAddress.Any, portSend);
while (true)
{
try
{
byte[] recivcedata = RecviceClient.Receive(ref remote);
string strMsg = Encoding.ASCII.GetString(recivcedata, 0, recivcedata.Length);
AddItem(listBoxRecv, string.Format("来自{0}:{1}", remote, strMsg));
}
catch
{
break;
}
}
}
细节注意
1、在Winfrom框架下,在多线程中进行控件操作,就需要使用异常委托方式解决。
2、使用同一台计算机进行调试,ip设置统一,即为:127.0.0.1,端口号不同。
总结
该文章简单对C#的UDP通讯进行一个讲解,简单入门可以,还有很多需要注意,比如需要加锁保护数据,使用队列等等方式对数据进行。再以后的文章中再补充。
C#之UDP通信的更多相关文章
- 高性能 TCP & UDP 通信框架 HP-Socket v3.5.3
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...
- 高性能 TCP & UDP 通信框架 HP-Socket v3.5.2
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...
- 高性能 TCP & UDP 通信框架 HP-Socket v3.5.1
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...
- 高性能 TCP & UDP 通信框架 HP-Socket v3.4.1
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...
- 高性能 TCP & UDP 通信框架 HP-Socket v3.3.1
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...
- HP-SOCKET TCP/UDP通信框架库解析
项目概述: HP-SOCKET是一套通用TCP/UDP通信框架,包括服务器.客户端.Agent组件:其目标是提供高性能.通用性.简易性.可扩展.可定制: 鉴于此,其仅实现基本的通用框架通信.数据收发功 ...
- .Net开发笔记(十四) 基于“泵”的UDP通信(接上篇)
上一篇中说到了“泵”在编程中的作用以及一些具体用处,但没有实际demo,可能不好理解,这篇文章我分享一个UDP通信的demo,大概实现了类似“飞鸽传书”在局域网中文本消息和文件传输的功能.功能不全也不 ...
- 高性能 TCP & UDP 通信框架 HP-Socket v3.2.3
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...
- 高性能 TCP & UDP 通信框架 HP-Socket v3.2.2 正式发布
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...
- [C语言]一个很实用的服务端和客户端进行UDP通信的实例
前段时间发了个TCP通信的例子,现在再来一个UDP通信的例子.这些可以作为样本程序,用到开发中.“裸写”socket老是记不住步骤,经常被鄙视…… 下面的例子很简单,写一个UDP的server用于收包 ...
随机推荐
- maven下载及安装最详解
maven的下载及安装 1.maven下载地址:https://maven.apache.org/download.cgi 2.将下载的安装包解压到自定义目录 3.配置环境变量 此电脑->右键属 ...
- Windows无人值守文件unattend制作以及自定义系统安装
原文链接:Create media for automated unattended install of Windows 10 我从来没看到过像上面的文章一样这么详细的描述过Windows10的无人 ...
- PIC单片机基础2
PIC中档系列单片机,每条指令14位,共有35条汇编指令,根据操作对象不同,可将其分为三类: 字节操作类指令 位操作类指令 立即数与控制类操作指令 1.字节操作类指令,以MOVF指令为例: 指令:MO ...
- [ gczdac ] 20190213 开博客啦!
测试一下! 今天开了新博客! 还自己改了下首页! 开心!!!!! 访者必阅 https://www.cnblogs.com/gczdac/ https://blog.csdn.net/qq_43540 ...
- caffe安装教程(Ubuntu14+GPU+pycaffe+anaconda2)
caffe安装教程 本文所使用的底层环境配置:cuda8.cudnn6.OpenCV2.4.5.anaconda2(Python2.7).如使用其他版本的环境,如cuda,可安装自己的版本,但须在相应 ...
- shell打印 菱形
#!/bin/bashread -p "input the length: " n for i in `seq 1 $n`do for ((j=$n;j> ...
- AI - TensorFlow - 示例02:影评文本分类
影评文本分类 文本分类(Text classification):https://www.tensorflow.org/tutorials/keras/basic_text_classificatio ...
- AI - TensorFlow - 可视化工具TensorBoard
TensorBoard TensorFlow自带的可视化工具,能够以直观的流程图的方式,清楚展示出整个神经网络的结构和框架,便于理解模型和发现问题. 可视化学习:https://www.tensorf ...
- springcloud之服务注册与发现(zookeeper注册中心)-Finchley.SR2版
新年第一篇博文,接着和大家分享springcloud相关内容:本次主要内容是使用cloud结合zookeeper作为注册中心来搭建服务调用,前面几篇文章有涉及到另外的eureka作为注册中心,有兴趣的 ...
- Dubbo简介
1. Dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案.简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需 ...