系统软件性能调优策略(二)异步网络传输模式
2010-04-19 21:29
387 查看
异步网络传输模式,分两个层面
A)使用非阻塞socket
B)异步数据处理模式
定义发送、接收控制索引及数据缓冲区
控制索引及数据缓冲区原则:
1)能发送就发送,不能发送也不能强求,将需要发送的数据先寄存到SndBuf中;
下次发送前,首先发送SndBuf中的数据
2)能接收就接收,不能接收就通过select(,readfds,,,timeout)来检测socket可读,然后再接收;
下次接收前,首先要接收上次预期的数据
备注:
异步网络传输模式,在以下两种情况下非常有效:
1)低带宽环境
2)普通带宽环境,但单次发送的数据量比较大,如32K
A)使用非阻塞socket
sockfd=socket(AF_INET,SOCK_STREAM,0); /* 设置socket缓冲区 */ size=65535; ret=setsockopt(sockfd,SOL_SOCKET,SO_SNDBUF,&size,sizeof(size)); size=65535; ret=setsockopt(sockfd,SOL_SOCKET,SO_RCVBUF,&size,sizeof(size)); /* 设置非阻塞socket */ #ifndef WIN32 # ifdef MY_HPUX jet = fcntl(sockfd,F_SETFL,O_NONBLOCK); # else jet = fcntl(sockfd,F_SETFL,O_NDELAY); # endif #else { DWORD flag = 1; jet = ioctlsocket(sockfd, FIONBIO, &flag); } #endif/**********win32*************/ jet = connect(sockfd,(struct sockaddr *)&cen_addr,sizeof(cen_addr));
B)异步数据处理模式
定义发送、接收控制索引及数据缓冲区
typedef struct rcv_buf_ctrl { short needRcvLen; } RCVBUFCTRL; char *RcvBuf; typedef struct snd_buf_ctrl { short needSndLen; } SNDBUFCTRL; char *SndBuf;
控制索引及数据缓冲区原则:
1)能发送就发送,不能发送也不能强求,将需要发送的数据先寄存到SndBuf中;
下次发送前,首先发送SndBuf中的数据
2)能接收就接收,不能接收就通过select(,readfds,,,timeout)来检测socket可读,然后再接收;
下次接收前,首先要接收上次预期的数据
备注:
异步网络传输模式,在以下两种情况下非常有效:
1)低带宽环境
2)普通带宽环境,但单次发送的数据量比较大,如32K
相关文章推荐
- 系统软件性能调优策略(二)异步网络传输模式
- 系统软件性能调优策略(三)
- 系统软件性能调优策略(三)
- 异步系统的性能调优记录(redis做消息队列)
- 软件系统性能优化策略--SQL优化
- Linux 性能调优,网络开发,系统诊断常用命令总结
- 软件系统性能优化策略--SQL优化
- LAMP 系统性能调优(MySQL 服务器调优)
- Oracle 12C -- 网络性能调优
- 系统性能调优如何做(2)?
- 软件系统性能的常见指标
- 第十一篇 ANDROID 系统网络连接和管理机制--状态模式
- C#网络Socket的数据发送与接收处理(利用异步)的模板(模式)
- Web系统性能调优吐血总结分享
- 系统性能调优(3)----数据库索引优化
- [置顶] 基于iOS的网络音视频实时传输系统(四)- 自定义socket协议(TCP、UDP)
- 提高WebService性能大数据量网络传输处理
- C语言和设计模式(策略模式) 【文章都是来自网络,只要自己吸取了就是自己的】
- Centos 性能调优基本策略设定
- Linux系统文件的网络传输、归档tar、压缩zip、gzip、bzip2、xz、gz、bz2