当前位置:  技术问答>linux和unix

###请教高手:UDP scocket传输策略的难题###up有分

    来源: 互联网  发布时间:2015-10-01

    本文导语:  我们现在有一段程序负责向服务器发送UDP包,这段程序被动等待其他程序的发送事件,在事件响应中通过UDP sock向服务器发送数据,为了提高效率,我们在这段程序中引入了一些缓冲机制,就是没凑够一定大小的Packet...

我们现在有一段程序负责向服务器发送UDP包,这段程序被动等待其他程序的发送事件,在事件响应中通过UDP sock向服务器发送数据,为了提高效率,我们在这段程序中引入了一些缓冲机制,就是没凑够一定大小的Packet(比如8K),再向外发送。但是这种机制存在问题,如果最后一批数据凑不够Packet要求的大小,就永远不会被发送;而这段代码被动等待事件,无法知道当前缓存的数据是否是最后一批,而且其他程序结束时,这段代码也会被结束,所以即使使用定时机制也不保险。

请教各位高手,有没有办法保证最后一批数据也能正常发出,不管最后剩的数据是否达到一个Packet的大小?有没有尽量少改动原来代码的办法?

非常感谢!

|
用atexit注册一个程序退出的时候执行发送函数行不行?

|
加包结束标志

|
加标志位,如果是最后一批数据则直接发送,否则等待接收满8K再发送

|
加个定时器好了!如果10秒不够 也发送 ok

|
启动发送程序的时候开一个线程,作定时检查,用线程来释放发送程序。

|
另外再做一个监控进程,当所有其它的进程退出后,监控进程扫描缓冲区,有则发出去

|
用冗余数据把他凑够8k不就行了,类似arp协议就是用很多没实际用途的字符凑够64byte,因为arp协议也是不凑够64 byte不能发送。

|
除非语音 
udp 一般就是发送短小数据 一个报文一条信息 而且好像在一定发送频率范围内 也没有明显的效率降低问题

|
既然是被动,可以叫主动发给它的sock发一个标志给它,告诉它下一个是最后一个包就行了

|
这个简单,你们发的包大小都是固定的把。你可以取一个各种包长度的最大公约数做缓冲大小。或者缓冲区大小动态可变。

我觉得奇怪你们设计的时候没有考虑过这个问题吗?那么你们设计的时候想的是什么?

    
 
 

您可能感兴趣的文章:

  • 请教unix系统下高效数据传输的方法
  • 请教使用openobex库实现蓝牙传输的问题
  • 请教传输音频数据问题
  • 请教一个完整的linux下通过串口传输各种文件的源码,多谢!
  • 请教串口传输文件的问题
  • 请教: tcp传输同步问题
  • 请教各位大虾:在linux下,怎样用程序实现基于ftp传输文件?
  • 请教:Linux和Windows间的文件传输问题
  • 请教脚本中如何判断文件是否通过ftp传输成功问题
  • 请教局域网传输软件编写的一些指导性意见
  • urb传输过程出错,初学,不知问题在哪,请教!
  • 有一难题请教
  • 请教一个难题:关于执行顺序。
  • 难题请教
  • linux8 上安装Oracle8.1.6的难题 ,请教
  • skyyoung(路人甲)先生,你好:我遇到一个难题,特向你请教,我用 qmail+vpopmail 做邮件服务器,怎样区分新旧邮件? 
  • 小弟刚开始学JAVA,遇到了难题,请教:
  • 遇到一个难题,请教高手!!!
  • 请教信号难题
  • 几个有关邮件收发难题,请教各位高手!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请教Linux内存分配策略与Windows有何异同?
  • 菜鸟第一次安装红帽子7.2的一箩筐问题。每个问题会开个帖子,各放100分!请有安装经验的老鸟们帮忙解决。第三个问题:请教硬盘分区策略
  • 请教,请教,这个问题是为什么????
  • 请教本地硬盘安装问题请教本地硬盘安装问题
  • ■请教■请教redhat最基本的问题!
  • 请教一个 shell 问题,我用下面这个 shell 语句总是失败,请教
  • 高分请教,各位大侠,请教一个问题,理论高手请进??谢谢
  • 请教Linux下pgadmin3-1.0.2的编译和安装!!高分请教!
  • 各位大虾,请教装了REDHAT9操作系统后,启动时无法引导到LINUX,请教该如何解决啊
  • 请教,请教,,,一定要看!!一定要看!!
  • 请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • :请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • 请教象我这样的硬盘应如何安装Linux,我昨天试装了,但有问题。(老问题了,也看了前面的帖子,但还是来请教,请多指教)
  • 请教这种循环的执行过程
  • 请教两个redhat9问题
  • 请教如何在指定目录下查找包含指定文字的文件
  • 请教局域网中如何通过ip地址得到主机名
  • 请教kdevelop的问题
  • 请教linux 下的adsl拨号问题.
  • 请教,如何用虚拟订机安装liux
  • 【请教】LINUX 下SNMP的MIB开发
  • 请教一个opengl的问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    小弟刚开始学JAVA,遇到了难题,请教: iis7站长之家