我想写一个网络通迅程序,是用单线程+异步+重叠IO好呢,还是用多线程+同步+非重叠IO好? 请告诉我是使用什么协议来通信,串行口、tcp、spx or 其它 ?另外请告诉我具体使用起来的时候服务器一般要响应多少个Client ?正常运行状况下单位时间内的数据流量估计有多少 ? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我用的是流式,有连接的,用的是TCP/IP协议,还请多多指教! 如果不是需要编写多个socket的服务器端,可以使用异步方式,而且是windows鼓励使用的方式,如果需要面对大量的连接请求,就另当别论了。对于客户端,如果不是追求流式socket的传输速率(例如下载软件)也可以用异步方式 asynchronous版的socket函数是win16年代的产物。由于win16时代不支持多线程,所以不得不想出这样一个解决办法。win32编程已不建议使用这些函数,而是用block版的函数+多线程(参见Programming Visual C++ 6.0第五版关于TCP/IP、Winsock一章)。原因很简单:1。在单线程中,如果线程正在处理某个较费时的UI消息或进行长时间的操作,而此时正好有数据到达TCP端口,则接收工作不可能立即进行。尤其是在一些数据流量较大,而处理工作又较费时的情况下,这一缺点非常明显;2。使用asynchronous版的函数不得不额外的添加消息处理代码,实现所谓的“状态机”,这与在多线程中顺序执行、只是注意线程间的协调同步比起来,工作量要大很多,而且极易出错。 不知道你使用什么通信方式,如果是TCP的话,你完全可用单线程同步方式,如果是串口那可用异步+重叠+多线程! 你用的是TCP那完全可用MFC异步类,CAsyncSocket或CSocket <<如果是串口那可用异步+重叠+多线程! 为什么呢? <<如果是串口那可用异步+重叠+多线程! 为什么呢? 对话框上显示曲线的问题 工具条按钮2个同时处于选中状态 屏幕闪烁老问题,分少了,呵呵 刚接触网络部分..问些简单问题!! TCP createthread 开辟线程 如何将实时解码得到的yuv数据显示到窗口上? 关于CFILEDIALOG类的问题 关于皮肤的实现原理!在线高分求教! 怎样响应键盘上的上,下,左,右键的按下和弹起信息 基于CMPP协议,手机短信息铃声和图片的发送问题,并且想结交使用过CMPP编程的朋友 我该在什么情况下,设计一个 DLL? 求救高手!VC中如何实现使CSplitterWnd中的分割条变成平面的,并且改变颜色?
如果需要面对大量的连接请求,就另当别论了。对于客户端,如果不是追求流式socket的传输速率(例如下载软件)也可以用异步方式
原因很简单:
1。在单线程中,如果线程正在处理某个较费时的UI消息或进行长时间的操作,而此时正好有数据到达TCP端口,则接收工作不可能立即进行。尤其是在一些数据流量较大,而处理工作又较费时的情况下,这一缺点非常明显;
2。使用asynchronous版的函数不得不额外的添加消息处理代码,实现所谓的“状态机”,这与在多线程中顺序执行、只是注意线程间的协调同步比起来,工作量要大很多,而且极易出错。