TCP/IP Winsock编程要点

2016-01-29 12:44 9 1 收藏

TCP/IP Winsock编程要点,TCP/IP Winsock编程要点

【 tulaoshi.com - C语言心得技巧 】

  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 reasonn");;
  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 %sn",pResult->h_name);;

}
  B、采用PING方式时间约2秒左右

  暂略


来源:http://www.tulaoshi.com/n/20160129/1487363.html

延伸阅读
       TCP/IP基础----为Linux做准备(1)      作者:meaculpa [中国Linux论坛]      TCP/IP协议体系结构简介      1、TCP/IP协议栈      四层模型   TCP/IP这个协议遵守一个四层的模型概念:应用层、传输层...
前一篇《Visual C#.Net网络程序开发之Socket》中说到:支持Http、Tcp和Udp的类组成了TCP/IP三层模型(请求响应层、应用协议层、传输层)的中间层-应用协议层,该层的类比位于最底层的Socket类提供了更高层次的抽象,它们封装 TCP 和 UDP 套接字的创建,不需要处理连接的细节,这使得我们在编写套接字级别的协议时,可以更多地尝试使用 TCPCli...
TCP/IP(Transmite Control Protocol 传输控制协议/Internet Protocol网际协议)已成为计算机网络的一套工业标准协议。Internet网之所以能将广阔范围内各种各样网络系统的计算机互联起来,主要是因为应用了“统一天下”的TCP/IP协议。在应用TCP/IP协议的网络环境中,为了唯一地确定一台主机的位置,必须为TCP/IP协议指定三个参数,即IP地址、...
标签: 电脑入门
TCP/IP是网络的基础,对于Windows系统来说,其所谓的TCP/IP设置主要是与网卡相关的网络参数设置部分。其实,这部分内容是需要管理员深入挖掘的。下面笔者列举几个于此相关的典型应用案例,希望对遇到类似问题的朋友有所帮助。 1.修改MAC,你管不着我 策划部的员工上班时间不务正业终于让领导忍无可忍,于是责令网管小...
标签: 电脑入门
3.善用备用,一劳永逸 移动办公是小马工作的主要特色,你会看见她提着笔记本频繁地奔波与单位和家之间。在单位的局域网,有DHCP服务器,小马不用进行IP设置就可马上投入工作。但是家里的网络连接的是小区宽带,需要设置固定的IP地址。为此,她需要频繁地更改网卡的TCP/IP设置,小林帮她找到了一劳永逸的办法。 打开“本地连...

经验教程

77

收藏

64
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部