`
auauau
  • 浏览: 172005 次
社区版块
存档分类
最新评论

c# UDP学习笔记

    博客分类:
  • net
udp 
阅读更多
UDP 只有在需要的时候客户端和服务端才会进行连接。
UDP 对主机进行单项数据操作,只需要使用UDPClient进行通讯操作。
主要方法:
REceive(ref IPEndPoint ep) ep:数据发送的主机,包括IP和端口。堵塞式接受数据。
Send(byte[] buf,int length,IPEndPoint ep) 。buf要发送的数据,length:发送数据的长度;ep发送到哪里

服务端接收代码:

UdpClient server = new UpdClient(port); //监听端口
IpEndPoint ipRemote;
try{
    byte[] buf = server.Receive(ref ipRemote); //堵塞在这里。将接收到的数据存放在buf,同时将客户端的Ip,端口信息保存在ipRemote变量中,这样就知道是谁发过来的数据了
    string message = Encoding.Default.GetString(buf); 将byte转为string类型
}catch(Exception ex){

}


可以通过while实现反复监听。通常结合多线程实现接收功能

Thread th = new Thread(new ThreadStart(GetData));
th.IsBackground = true;
th.Start();


this.Invoke(new 委托(functon),object[]{msg});


子线程需要使用委托更新主线程信息

客户端发送代码

UdpClient client = new UdpClient(clientPort); //本机端口,通过这个端口号发送数据
IPEnPoint server  = new IpEndPoint(IPAddress.Parse(serverHost,serverPort)); //制定服务器IP和端口
byte[] buf = Encoding.Default.GetByte(message); //将发送的消息转为字节数组
client.Send(buf,buf.length,server);


UpdClient关闭前,可以重复利用,多次发布、接收消息

public event DataArriveHandler onDataArrived; //定义事件
//需要声明一个同名、同参数的方法

private void onDataArrived(byte[] ,IpEndpoint ep){
   this.Invoke(....); //子线程更新主线程
}

调用
if(this.onDataArrived !=null){
   onDataArrived(buf,clientep);
}





服务端发送数据


public void Send(byte[] data,IPEndPoint endPont) { //data发送的数据;endPoint数据接收地址,也就是目的地址
  this.Server.Send(data,data.length,endpont); //server=new UdpClient(port); 服务端监听端口
}


同一个UdpClient实例,既可以接收,也可以发送

取得本机的IP地址
string hostname = Dns.GetHostName(); //取得当前主机名
IPAddress[] myIps = Dns.GetHostAddresses(hostname); //取得当前主机所有IP,多个网卡有多个地址
foreach(IPAddress ip in myIps){
   string ip = address.ToString();
   //还需要判断这个ip是否是需要的,比如只取得Ipv4的地址
}


双向通讯,两端都需要监听,代码是类似的。
分享到:
评论

相关推荐

    C#学习笔记网络篇.pdf

    根据提供的文件信息,本文将对其中涉及的关键知识点进行详细的阐述,包括通过网络发送和播放麦克风声音的方法、网络抓包与分析技术以及相关的C#编程技巧。 ### 一、通过网络发送和播放麦克风的声音 #### 1.1 介绍 ...

    C#之TcpClient,UdpClient,Socket入门实例

    在提供的"Socket积累"文件中,可能包含了关于这些主题的代码示例、学习笔记或者常见问题解答,这些都是深入理解和掌握C#网络编程的宝贵资源。建议仔细研究这些材料,结合实践操作,以加深理解并提升技能。同时,不断...

    这只是一简单的c#写的UDP程序

    总的来说,这个简单的C# UDP程序展示了如何利用C#语言和.NET Framework构建一个基础的UDP通信应用,对于初学者来说是学习网络编程和理解UDP工作原理的一个好起点。通过深入研究和扩展这个程序,可以进一步理解网络...

    C#学习笔记_20100612

    ### C#学习笔记_20100612 #### 通过网络发送和播放麦克风的声音 **介绍** 本节主要介绍了如何实现通过网络发送并播放来自麦克风的声音信号。这种技术可以用来构建基本的点对点(P2P)通信系统。文中提到的源代码可以...

    中美 IT 培训 C# Asp.net 笔记3

    C# 基本语法、面向对象的思想、数据结构和算法以及设计模式(120课时) 详细介绍.Net Framework、C# 基本语法、编程规范和编程技巧、面向对象的认识问题和分析问题的思想、以及数据结构和常用算法,学习单件模式、...

    那些年,我还在学习C# 学习笔记续

    【C# 学习笔记续】深入理解C#中的文件操作和网络编程 在学习C#的过程中,掌握各种基础知识是至关重要的,这不仅能够提升个人技术能力,还能够在实际项目中灵活应用。本文将继续探讨C#中的一些重要概念,包括文件...

    C#面试核心内容笔记

    10. **网络编程**:学习Socket编程,包括TCP和UDP协议,以及如何使用HttpWebRequest/HttpWebResponse进行HTTP请求。 11. **设计模式**:理解常见的设计模式,如单例模式、工厂模式、观察者模式等,并能结合实际场景...

    中美 IT 培训 C# Asp.net 笔记2

    C# 基本语法、面向对象的思想、数据结构和算法以及设计模式(120课时) 详细介绍.Net Framework、C# 基本语法、编程规范和编程技巧、面向对象的认识问题和分析问题的思想、以及数据结构和常用算法,学习单件模式、...

    高级C#应用方法的笔记

    在C#编程中,开发者经常会遇到处理数学运算、文件输入输出(IO)、字典操作、列表操作、套接字通信以及多线程等任务。这些是C#编程中不可或缺的基础和高级概念,对于...不断学习和实践,是成为优秀C#开发者的必经之路。

    C#网络编程基础

    在学习C#网络编程时,理解套接字(Socket)的概念也至关重要,它是网络通信的基础构建块。套接字提供了低级别的网络访问,可以构建更复杂和定制化的通信协议。同时,要熟悉IP地址、端口号、套接字选项等概念,这些都...

    中美 IT 培训 C# Asp.net 全套笔记1

    价值一万八的中美 IT 培训笔记一万多培训费的资料,北京权威的.NET培训机构】 【认真学习后你一定能成为优秀的.net程序员】 学习对象:1.大专及大专以上理工科学历,或有相当学历的理工科教育背景  2.热爱...

    Socket网络编程学习笔记(1)

    - `Broadcast`:代表本地网络的广播地址,用于UDP广播。 - `Loopback`:代表系统的回送地址,通常为`127.0.0.1`或`::1`,用于测试网络栈。 - `None`:代表系统上没有网络接口。 ##### 2. `IPEndPoint`类 `...

    C#下Sockect的简易聊天室

    首先,我们需要创建一个Socket实例,指定它的协议类型(如TCP或UDP)和地址族(如InterNetwork,表示IPv4)。然后,我们可以使用Connect()方法连接到远程服务器,或者使用Listen()方法开启服务器监听,等待客户端...

    C#套接字编程

    通过阅读"Socket网络编程学习笔记1.doc"和"Socket网络编程学习笔记2.doc",你可以更深入地了解C#套接字编程的细节,包括具体代码实现和实战案例,从而提升你的网络编程技能。在实际项目中,理解并熟练运用这些知识,...

    网络编程练习笔记

    总的来说,这份笔记将深入探讨C#中的网络编程,包括TCP和UDP的连接建立、数据传输、异常处理等关键知识点,通过实例代码和详细的注释,帮助读者逐步掌握网络编程的基本技巧。对于想要学习网络编程的C#开发者,这是一...

    使用C#,Arduino和ESP8266的网络VU声级计-项目开发

    在这个项目中,C#被用来创建一个Windows Forms应用程序,该程序作为用户界面,显示声级计的读数并处理与ESP8266之间的UDP通信。`windows_form_application.cs`文件就是实现这一功能的源代码,包含UI设计和网络通信...

    DNS集成服务系统c.rar_dns系统c

    5. **网络通信**:使用C#的Socket类,源码会实现与DNS客户端和其他DNS服务器之间的TCP或UDP通信,处理数据包的发送和接收。 6. **错误处理**:源码还会包含各种错误处理机制,以应对网络故障、解析错误等情况,确保...

    值类型与引用类型理论内容.part01.rar

    ASP.NET培训资料(笔记版)(AJAX,C#,JavaScript,SQL) 详细的资料 三个月的课程录像+资料笔记(花了一万六千块的培训资料超值【19G的经典内容】 认真学习后包你能成为优秀的.net程序员 <br>(注明:不是...

Global site tag (gtag.js) - Google Analytics