社区
C#
帖子详情
接收发送udp数据问题
aiolos1
2009-01-12 02:20:48
我将收到的udp数据5min打一个包存入文件,现在想把文件中的udp数据播放出来(send),有其他程序接收,怎么实现?
因为在接收时两个UDP包的时间间隔是500ms,发送的时候就应该thread.sleep(500);怎么才能根据udp包的时间间隔发送?
...全文
67
4
打赏
收藏
接收发送udp数据问题
我将收到的udp数据5min打一个包存入文件,现在想把文件中的udp数据播放出来(send),有其他程序接收,怎么实现? 因为在接收时两个UDP包的时间间隔是500ms,发送的时候就应该thread.sleep(500);怎么才能根据udp包的时间间隔发送?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zhangshuihua2007
2010-03-30
打赏
举报
回复
study!!!!!!
happychou
2009-01-12
打赏
举报
回复
//解析接收的数据包,形成PacketArrivedEventArgs事件数据类对象,并引发PacketArrival事件
unsafe private void Receive(byte [] buf, int len)
{
byte temp_protocol=0;
uint temp_version=0;
uint temp_ip_srcaddr=0;
uint temp_ip_destaddr=0;
short temp_srcport=0;
short temp_dstport=0;
IPAddress temp_ip;
PacketArrivedEventArgs e=new PacketArrivedEventArgs();//新网络数据包信息事件
fixed(byte *fixed_buf = buf)
{
IPHeader * head = (IPHeader *) fixed_buf;//把数据流整和为IPHeader结构
e.HeaderLength=(uint)(head->ip_verlen & 0x0F) << 2;
temp_protocol = head->ip_protocol;
switch(temp_protocol)//提取协议类型
{
case 1: e.Protocol="ICMP"; break;
case 2: e.Protocol="IGMP"; break;
case 6: e.Protocol="TCP"; break;
case 17: e.Protocol="UDP"; break;
default: e.Protocol= "UNKNOWN"; break;
}
temp_version =(uint)(head->ip_verlen & 0xF0) >> 4;//提取IP协议版本
e.IPVersion = temp_version.ToString();
//以下语句提取出了PacketArrivedEventArgs对象中的其他参数
temp_ip_srcaddr = head->ip_srcaddr;
temp_ip_destaddr = head->ip_destaddr;
temp_ip = new IPAddress(temp_ip_srcaddr);
e.OriginationAddress =temp_ip.ToString();
temp_ip = new IPAddress(temp_ip_destaddr);
e.DestinationAddress = temp_ip.ToString();
temp_srcport = *(short *)&fixed_buf[e.HeaderLength];
temp_dstport = *(short *)&fixed_buf[e.HeaderLength+2];
e.OriginationPort=IPAddress.NetworkToHostOrder(temp_srcport).ToString();
e.DestinationPort=IPAddress.NetworkToHostOrder(temp_dstport).ToString();
e.PacketLength =(uint)len;
e.MessageLength =(uint)len - e.HeaderLength;
e.ReceiveBuffer=buf;
//把buf中的IP头赋给PacketArrivedEventArgs中的IPHeaderBuffer
Array.Copy(buf,0,e.IPHeaderBuffer,0,(int)e.HeaderLength);
//把buf中的包中内容赋给PacketArrivedEventArgs中的MessageBuffer
Array.Copy(buf,(int)e.HeaderLength,e.MessageBuffer,0,(int)e.MessageLength);
}
//引发PacketArrival事件
OnPacketArrival(e);
}
第二给问题可以使用Timer函数,不过数据大的话可能会有问题
greystar
2009-01-12
打赏
举报
回复
不是很明白你的意思.你将搂据放到文件时,可以定义相应的数据结构,就象(数据库里的表).取的时候也方便,为什么要5Min发送一次,如果真的这样,那你使用定时器来发送好的.
liumeiqinyang
2009-01-12
打赏
举报
回复
帮顶上去
C#的Socket实现
UDP
协议通信
其主要特点是无连接且不可靠的
数据
传输,这意味着
UDP
在
发送
数据
时不会建立连接,也不会确认
数据
是否被
接收
方成功
接收
。这种特性使得
UDP
在
数据
传输速度和资源消耗上比TCP更优,适合于对实时性和速度有较高要求的应用...
Android
UDP
通讯工具
10. **多播支持**:
UDP
还支持多播,即一个
数据
报可以同时
发送
给多个
接收
者,这在广播消息或视频流媒体中非常有用。Android提供了`MulticastSocket`类来支持多播功能。 总的来说,“Android
UDP
通讯工具”是一个利用...
C# Socket TCP和
UDP
报文及端口测试工具的开发(提供源码)万能超好测试工具
对于
UDP
,我们通常使用Bind()方法绑定到本地端口,然后通过SendTo()和ReceiveFrom()方法进行
数据
发送
和
接收
。 在TCP测试工具的开发中,我们需要实现客户端和服务器两端的功能。客户端负责建立连接,
发送
数据
,并...
Socket编程例子
2.
数据
传输:客户端使用`send()`或`write()`函数将
数据
发送
到服务器,服务器通过`recv()`或`read()`函数
接收
数据
。为了保证
数据
的完整传输,通常需要在一个循环中不断读写,直到所有
数据
发送
完毕。 3. 关闭连接:...
java
发送
和
接收
udp
数据
udp
数据
帧结构
java
udp
发送
和
接收
数据
C#
111,112
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章