设为首页 加入收藏

TOP

套接口库函数参考(五十二)
2010-12-30 21:03:01 来源: 作者: 【 】 浏览:58550
Tags:接口 函数 参考
议,则返回
WSAEMSGSIZE错误,数据不会被发送。

  请注意成功地完成sendto()调用并不意味着数据传送到达。

  sendto()函数主要用于SOCK_DGRAM类型套接口向to参数指定端的套接口发送数据报。对于SOCK_STREAM类型套接口,totolen参数被忽略;这种情况下sendto()等价于send()

  为了发送广播数据(仅适用于SOCK_DGRAM),in参数所含地址应该把特定的IP地址INADDR_BROADCASTwinsock.h中有定义)和终端地址结合起来构造。通常建议一个广播数据报的大小不要大到以致产生碎片,也就是说数据报的数据部分(包括头)不超过512字节。

  如果传送系统的缓冲区空间不够保存需传送的数据,除非套接口处于非阻塞I/O方式,否则sendto()将阻塞。对于非阻塞SOCK_STREAM类型的套接口,实际写的数据数目可能在1到所需大小之间,其值取决于本地和远端主机的缓冲区大小。可用select()调用来确定何时能够进一步发送数据。

  在相关套接口的选项之上,还可通过标志位flag来影响函数的执行方式。也就是说,本函数的语义既取决于套接口的选项也取决于标志位。后者由以下一些值组成:

 

      意义

MSG_DONTROUTE   指明数据不选径。一个WINDOWS套接口供应商可以忽略此标志;参见2.4节中关于SO_DONTROUTE的讨论。

MSG_OOB     发送带外数据(仅适用于SO_STREAM;参见2.2.3节)。 

 

返回值:

  若无错误发生,send()返回所发送数据的总数(请注意这个数字可能小于len中所规定的大小)。否则的话,返回SOCKET_ERROR错误,应用程序可通过WSAGetLastError()获取相应错误代码。

 

 

错误代码:

  WSANOTINITIALISED:在使用此API之前应首先成功地调用WSAStartup()

&nbs

首页 上一页 49 50 51 52 53 54 55 下一页 尾页 52/129/129
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇网络基础知识讲座之一:理解IPv4.. 下一篇Windows Sockets 2扩展库函数简要..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: