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

网络编程的传输速率问题,高手请进!

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

    本文导语:  各位:     我在做一个网络通信的项目,涉及到了在Server机和Client机之间传输数据,在Server上运行着两个进程(A和B):A进程负责数据包的监听和更改、B进程负责同Client之间的正常通信(A和B之间通过共享内存进行...

各位:
    我在做一个网络通信的项目,涉及到了在Server机和Client机之间传输数据,在Server上运行着两个进程(A和B):A进程负责数据包的监听和更改、B进程负责同Client之间的正常通信(A和B之间通过共享内存进行通信,而Server和Client之间的通信是通过Socket实现的)。现在的最大难题就是如何实现Server和Client之间的高速数据传输。
    目前的限制:B进程只能派生一个线程(C线程)来负责向Client不断地发送数据,B进程本身需要维护同Client的其他联系。所以,如何使C线程能够尽最大能力进行数据转发捆扰了在下很久!
    我目前的做法:A进程监听到一个数据包并更改完成后就触发C线程的接收代理,从而使C线程的循环中的Receive函数(消息接收函数)解除阻塞转而将该数据包从A进程(通过共享内存)处提取出来并发送给Client机。但是A进程向C线程发送数据包的速率始终要比C线程向Client发送的速率要快,所以A和C之间的共享内存就会有被填满的时候,从而出现问题(而且现在已经证明:当有大量、快速的数据包被A进程截获时,共享内存将会被填满)。
    现在向想各位大虾请教的是,如何使C线程能够尽可能快地响应A进程?通过上述的代理?中断处理?还是其他的方式?如果是中断处理的话,好象是不能进行并发触发的吧?(就是上个中断处理函数没有执行完毕之前又来了一个中断,此时如何处理)?
    请各位踊跃参与讨论,来者有分!!!不够再加!!!

|
C线程轮询读sharemem,别用触发。一般来说网络发送不应该比sharemem慢,如果数据不做处理的话,sharemem里应该始终保持很少的数据。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • IOS开发之socket网络编程(基于SimpleNetworkStreams的c/s程序)
  • 用java做网络编程和用c做网络编程有啥区别
  • andriod下java socket网络编程:java socket客户端服务端代码示例
  • 嵌入式网络编程与非嵌入式网络编程有什么不同
  • 《UNIX网络编程》这本书适合linux下的网络编程吗?
  • 读过 Unix网络编程 或者 熟知Unix网络编程的 的进来看一下
  • 请问unix网络编程和linux网络有什么区别
  • UNIX网络编程卷1
  • 高分求网络编程方面的书籍
  • 求助:linux/unix网络编程
  • 新手请教,linux网络编程。
  • linux环境进行网络编程的教材
  • Unix/Linux网络编程怎样来做一个项目?
  • 关于文件操作和Socket网络编程!
  • linux下网络编程环境配置问题
  • java的网络编程
  • 网络编程中“多宿”是什么意思
  • 谁知道哪有《Unix网络编程》w.richard stevens 著的下载?
  • 菜鸟问题:请问要在Linux操作系统下完成TCP/IP网络编程,用什么编程工具好?
  • 请推荐几本Linux/Unix网络编程的好书吧
  • 求介绍linux下的网络编程书


  • 站内导航:


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

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

    浙ICP备11055608号-3