社区
C#
帖子详情
接收发送udp数据问题
aiolos1
2009-01-12 02:20:48
我将收到的udp数据5min打一个包存入文件,现在想把文件中的udp数据播放出来(send),有其他程序接收,怎么实现?
因为在接收时两个UDP包的时间间隔是500ms,发送的时候就应该thread.sleep(500);怎么才能根据udp包的时间间隔发送?
...全文
53
4
打赏
收藏
接收发送udp数据问题
我将收到的udp数据5min打一个包存入文件,现在想把文件中的udp数据播放出来(send),有其他程序接收,怎么实现? 因为在接收时两个UDP包的时间间隔是500ms,发送的时候就应该thread.sleep(500);怎么才能根据udp包的时间间隔发送?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
打赏
举报
回复
帮顶上去
windows下
UDP
组播(多播)
发送
和
接收
程序
一个简单的C++实现
UDP
组播
发送
和
接收
的程序
java
发送
和
接收
udp
数据
udp
数据
帧结构
java
udp
发送
和
接收
数据
计算机网络 传输层 TCP和
UDP
协议
传输层协议加一个端口号来标识一个应用层协议, 展示了传输层协议和应用层协议之间的关系 # 使用TCP/IP筛选实现网络安全 防火墙设置与端口 #
UDP
协议特点和报文格式
UDP
是无连接的:即
发送
数据
之前不需要建立连接 ...
UDP
和TCP协议
发送
接收
数据
一.
UDP
协议
发送
接收
数据
(不需要建立连接,不可靠协议)1.(客户端)
发送
数据
步骤:2.(服务端)
接收
数据
步骤:3.实现客户端键盘录入,服务端控制台输出(多线程)4.实现双方互聊(多线程) 二.TCP协议
发送
接收
数据
(必须建立连接,...
udp
接收
发送
数据
程序以及注意事项
5.若写
udp
_ser_socket.sendto(b’Ubuntu’.,client_address)7.
UDP
必须先一方先
接收
,另一方才能
发送
,且
接收
和
发送
是必须是成对的。8.写代码,IP地址一定要对应好,否则会出错。1.绑定bind 后查看本地端口的状态。6....
C#
110,538
社区成员
642,577
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章