
TCP/IP Winsock编程要点
发布时间:2006-05-05 19:03:43 来源:天极网 网友评论 0 条[文章导读]利用Winsock编程由同步和异步方式,同步方式逻辑清晰,编程专注于应用......
利用Winsock编程由同步和异步方式,同步方式逻辑清晰,编程专注于应用,在抢先式的多任务操作系统中(WinNt、Win2K)采用多线程方式效率基本达到异步方式的水平,应此以下为同步方式编程要点。1、快速通信
Winsock的Nagle算法将降低小数据报的发送速度,而系统默认是使用Nagle算法,使用
int setsockopt(
SOCKET s,
int level,
int optname,
const char FAR *optval,
int optlen
);函数关闭它 例子:
SOCKET sConnect;
sConnect=::socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
int bNodelay = 1;
int err;
err = setsockopt(
sConnect,
IPPROTO_TCP,
TCP_NODELAY,
(char *)&bNodelay,
sizoeof(bNodelay));//不采用延时算法
if (err != NO_ERROR)
TRACE ("setsockopt failed for some reason/n");; 2、SOCKET的SegMentSize和收发缓冲
TCPSegMentSize是发送接受时单个数据报的最大长度,系统默认为1460,收发缓冲大小为8192。
在SOCK_STREAM方式下,如果单次发送数据超过1460,系统将分成多个数据报传送,在对方接受到的将是一个数据流,应用程序需要增加断帧的判断。当然可以采用修改注册表的方式改变1460的大小,但MicrcoSoft认为1460是最佳效率的参数,不建议修改。
在工控系统中,建议关闭Nagle算法,每次发送数据小于1460个字节(推荐1400),这样每次发送的是一个完整的数据报,减少对方对数据流的断帧处理。
3、同步方式中减少断网时connect函数的阻塞时间
同步方式中的断网时connect的阻塞时间为20秒左右,可采用gethostbyaddr事先判断到服务主机的路径是否是通的,或者先ping一下对方主机的IP地址。
A、采用gethostbyaddr阻塞时间不管成功与否为4秒左右。
例子:
LONG lPort=3024;
struct sockaddr_in ServerHostAddr;//服务主机地址
ServerHostAddr.sin_family=AF_INET;
ServerHostAddr.sin_port=::htons(u_short(lPort));
ServerHostAddr.sin_addr.s_addr=::inet_addr("192.168.1.3");
HOSTENT* pResult=gethostbyaddr((const char *) &
(ServerHostAddr.sin_addr.s_addr),4,AF_INET);
if(NULL==pResult)
{
int nErrorCode=WSAGetLastError();
TRACE("gethostbyaddr errorcode=%d",nErrorCode);
}
else
{
TRACE("gethostbyaddr %s/n",pResult->h_name);;
} B、采用PING方式时间约2秒左右
暂略
推荐阅讯
- C++ Builder构建算二十四点小游戏
- C++/CLR泛型与C++模板的对比
- VC下调用ACM音频编程接口压缩Wave音频
- VC编程轻松获取局域网连接通知
- Windows Sockets:字节排序
- Windows Sockets:带存档的套接字的工作方式
- 奇技淫巧C++之返回值重载
- 轻轻松松学习C++ 标准模板库STL
- c/c++中字符串常量的不相等性,以及字符串的
- More Effective C++:类型转换
阅读排行
- 1.Borland 发布C++ Builder 2006 RAD 环境
- 2.C/C++程序员应聘常见面试题深入剖析
- 3.Visual C++常用数据类型转换详解
- 4.C++中的 static 关键字
- 5.利用VC++实现局域网实时视频传输
- 6.浅谈C/C++内存泄漏及其检测工具
- 7.英国投票否决C++/CLI 微软强攻ISO标准受挫
- 8.VC++下用MSComm控件实现串口通讯
- 9.伪随机数生成及在VC++中的实现
- 10.VC++编程实现对波形数据的频谱分析
专题教程
- 大话G游 专题:手机病毒揭密
- ARP攻击防范与解决方案 路由故障处理手册
- Picasa中文版_Picasa教程 专题:清除流氓软件
- Firefox专题 seo搜索引擎优化专区
- 重装Windows必知的事情 装机之必备软件大行动
病毒专杀栏
