传回值: 成功 - 符合条件的 Sockets 总数 (若 Timeout 发生,则为 0)
失败 - SOCKET_ERROR (呼叫 WSAGetLastError() 可得知原因)
说明: 使用者可利用此函式来检查 Sockets 是否有资料可被读取,
或是有空间可以写入,或是有错误发生。
(19) send():使用连接式的 Socket 传送资料。
格 式: int PASCAL FAR send( SOCKET s,
const char FAR *buf,
int len,
int flags );
参 数: s Socket 的识别码
buf 存放要传送的资料的暂存区
len buf 的长度
flags 此函式被呼叫的方式
传回值: 成功 - 送出的资料长度
失败 - SOCKET_ERROR (呼叫 WSAGetLastError() 可得知原因)
说明: 此函式适用於连接式的 Datagram 或 Stream Socket 来传送资料。
对 Datagram Socket 言,若是 datagram 的大小超过限制,则将不会送出
任何资料,并会传回错误值。若是传送 (transport) 系统内之储存空间不
够存放这些要传送的资料,send() 将会被 block 住,除非该 Socket 被设
定为 non-blocking 模式。使用者亦须注意 send()函式执行完成,并不表
示资料已经成功地送抵对方了。 flags 的值可设为 MSG_DONTROUTE
(*暂不提供此功能)及 MSG_OOB 的组合。(参见 WINSOCK第1.1版48页)
(20) sendto():将资料送到指定的目的地。
格 式: int PASCAL FAR sendto( SOCKET s,
const char FAR *buf,
int len,
int flags,
const struct sockaddr FAR *to,
int tolen );
参 数: s Socket 的识别码
buf 存放要传送的资料的暂存区
len buf 的长度
flags 此函式被呼叫的方式
to 资料要送达的位址
tolen to 的大小
传回值: 成功 - 送出的资料长度
失败 - SOCKET_ERROR (呼叫 WSAGetLastError() 可得知原因)
说明: 此函式适用於 Datagram 或 Stream Socket 来传送资料到指定的位址。
对 Datagram Socket 言,若是 datagram 的大小超过限制,则将不会送出
任何资料,并会传回错误值。对 Stream Socket 言,其作用与 send() 相
同;参数 to 及 tolen 在此并无作用。 若是传送 (transport) 系统内之储
存空间不够存放这些要传送的资料,sendto() 将会被 block 住,除非该
Socket 被设定为 non-blocking 模式。使用者亦须注意 sendto() 函式执行
完成,并不表示资料已经成功地送抵对方了。 flags 的值可设为 MSG_DONTROUTE
(*暂不提供此功能)及 MSG_OOB 的组合。(参见 WINSOCK第1.1版51页)
(21) setsockopt():设定 Socket 的状态。
格 式: int PASCAL FAR setsockopt( SOCKET s,
int level,
int optname,
const char FAR *optval,
int optlen );
参 数: s Socket 的识别码
level 选项设定的 level
optname 选项名称
optval 选项的设定值
optlen 选项设定值的长度
传回值: 成功 - 0
失败 - SOCKET_ERROR (呼叫 WSAGetLastError() 可得知原因)
说明: 此函式用来设定 Socket 的一些选项,藉以更改其动作。
可更改的选项有: (参见WINSOCK第1.1版54页)
Value Type
-----------------------------------------------
SO_BROADCAST BOOL
*SO_DEBUG BOOL
SO_DONTLINGER BOOL
*SO_DONTROUTE BOOL
*SO_KEEPALIVE BOOL
SO_LINGER st