有谁能写个udpsocket接收流的例子? ( 积分: 100 )

  • 主题发起人 主题发起人 绝对新手
  • 开始时间 开始时间

绝对新手

Unregistered / Unconfirmed
GUEST, unregistred user!
UdpSocket好像只有SendStream而没有ReadStream或者ReceiveStream之类的接收流的方法
还有UdpSocket的OnReceive事件好像不能触发哦(我已经把Active := True),希望大家帮忙解决
最好给个udpsocket接收流的例子 谢谢
 
UdpSocket好像只有SendStream而没有ReadStream或者ReceiveStream之类的接收流的方法
还有UdpSocket的OnReceive事件好像不能触发哦(我已经把Active := True),希望大家帮忙解决
最好给个udpsocket接收流的例子 谢谢
 
我这100分就沉底了????????????
 
我最近刚好写了一个udp通讯的例子(测试程序), 完全使用Windows Socket API写的(没有使用Delphi或者indy的控件); 我可以将代码放在我的网络硬盘上, 你可以看看:
http://idelphi.ys168.com
有几个要点在这里可以先提示你:
1. UDP的特点是无连接, 数据发送和接收以数据报(一次发或者接一个完整的数据块);
2. 有些高级的控件将udp包装成流式通讯方式, 其实是不好使用的;
3. 受到复杂的网络硬软件限制, udp的一个数据报的最大的大小不一定的,
有的很小(小于1K), 有的可以很大(可以达到32k或者更大);
4. udp的发送和接收不能保证数据的完整和顺序; 当然如果自己加上复杂的校验机制除外(其实这样等于又成了tcp);
5. udp常用于语音、视频等可以损失的数据的传送和接收;
 
udp接收流的效率是很低的,你可以用一个while死循环来接收,用idudpclient.receive.....就可以了,不过还是建议用普通的recvstring方法就可以了,发送给你的信息都通过base64编码格式就可以了,这边用这个函数完全可接收到的~~,不过udp一半传输数据的时候都回出现丢包的现象,所以对每个数据报文中间添加编号,最好写个栈类来进行专门的处理就可以了,很简单地
 
后退
顶部