Winsock API函数大全2
副标题#e#
本系统(WinKing)提供之 Windows Sockets API 介面乃是依照 1993年1月20日发布之 WINSOCK 第1.1版(如附录)中所界说之函式 (routine); 包罗了30个Berkeley Software Distribution (BSD) 的函式以及16个切合 Windows Message-driven 特性的函式。
(11) inet_ntoa():将一网路位址转换成「点名目」字串。
名目: char FAR * PASCAL FAR inet_ntoa( struct in_addr in );
参数: in 一个代表 Internet 位址的布局
传回值: 乐成 – 一个代表位址的「点名目」(dotted) 字串
失败 – NULL
说明: 此函式将一 Internet 位址转换成「a.b.c.d」字串名目。
(12) ioctlsocket():节制 Socket 的模式。
名目: int PASCAL FAR ioctlsocket( SOCKET s, long cmd, u_long FAR *argP );
参数: s Socket 的识别码,cmd 指令名称,argP 指向 cmd 参数的指标
传回值: 乐成 – 0
失败 – SOCKET_ERROR (呼唤 WSAGetLastError() 可得知原因)
说明: 此函式用来获取或设定 Socket 的运作参数。其所提供的指令有:
FIONBIO — 开关 non-blocking 模式
FIONREAD — 自 Socket 一次可读取的资料量
SIOCATMARK — OOB 资料是否已被读取完 (*暂不提供此成果)
(13) listen():设定 Socket 为监听状态,筹备被毗连。
格 式: int PASCAL FAR listen( SOCKET s, int backlog );
参 数: s Socket 的识别码,backlog 未真正完成毗连前(尚未呼唤 accept() 前)彼端的毗连要求的最大个数
传回值: 乐成 – 0
失败 – SOCKET_ERROR (呼唤 WSAGetLastError() 可得知原因)
说明: 利用者可操作此函式来设定 Socket 进入监听状态,并设定最多可有几多个在未真正完成毗连前的彼端的毗连要求。(今朝最大值限制为 5, 最小值为1)
#p#副标题#e#
(14) ntohl():将一 32 位元 u_long 的值由 network 分列方法转换成host 分列方法。
名目: u_long PASCAL FAR ntohl( u_long netlong );
参数: netlong 一个 32 位元 network 分列方法的数目
传回值: 一个 32 位元 host 分列方法的数目
说明: 因为 network 的分列方法与 host 的分列方法大概差异,所以我们需要此一函式来做转换。
(15) ntohs():将一 16 位元 u_short 的值由 network 分列方法转换成host 分列方法。
名目: u_short PASCAL FAR ntohs( u_short netshort );
参数: netshort 一个 16 位元 network 分列方法的数目
传回值: 一个 16 位元 host 分列方法的数目
说明: 因为 network 的分列方法与 host 的分列方法大概差异,所以我们需要此一函式来做转换。
(16) recv():自 Socket 吸收资料。
名目: int PASCAL FAR recv( SOCKET s,char FAR *buf,int len,int flags );
参数: s Socket 的识别码,buf 存放吸收到的资料的暂存区,len buf 的长度,flags 此函式被呼唤的方法
传回值: 乐成 – 吸收到的资料长度 (若对方 Socket 已封锁,则为 0)
失败 – SOCKET_ERROR (呼唤 WSAGetLastError() 可得知原因)
说明: 此函式用来自毗连式的 Datagram Socket 或 Stream Socket吸收资料。对 Stream Socket 言,我们可以吸收到今朝有效的 (available)资料,但其数量不高出 len 的巨细。若是此 Socket 设定 SO_OOBINLINE,且有 out-of-band 的资料未被读取,那麽只有 out-of-band 的资料被取出。
对 Datagram Socket 言,只取出第一个 datagram;若是该 datagram 大於利用者提供的储存空间,那麽只有该空间巨细的资料被取出,多馀的资料将遗失,且回答错误的讯息。 flags 的值可为 MSG_PEEK、MSG_OOB(*暂不提供此成果)的组合.
(17) recvfrom():读取一个 Datagram,并储存资料来历的位址。
格 式: int PASCAL FAR recvfrom( SOCKET s,char FAR *buf,int len,int flags,struct socketaddr FAR *from,int FAR *fromlen );
参 数: s Socket 的识别码,buf 存放吸收到的资料的暂存区,len buf 的长度,flags 此函式被呼唤的方法,from 资料来历的位址,fromlen from 的巨细
传回值: 乐成 – 吸收到的资料长度 (若对方 Socket 已封锁,则为 0)
失败 – SOCKET_ERROR (呼唤 WSAGetLastError() 可得知原因)
说明: 此函式用来读取资料并记录资料来历的位址。对 Stream Socket 言,其浸染与 recv() 沟通,参数 from 及 fromlen 将不被用到。
(18) select():查抄一或多个 Sockets 是否处於可读、可写或错误的状态。
名目: int PASCAL FAR select( int nfds,fd_set FAR *readfds,fd_set FAR *writefds,fd_set FAR *exceptfds,const struct timeval FAR *timeout );
参数: nfds 此参数在此并无浸染,readfds 要被查抄是否可读的 Sockets,writefds 要被查抄是否可写的 Sockets,exceptfds 要被查抄是否有错误的 Sockets,timeout 此函式该期待的时间。若为 NULL 时,暗示 blocking,此函式会比及有事件产生。
传回值: 乐成 – 切合条件的 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() 可得知原因)
#p#分页标题#e#
说明: 此函式合用於毗连式的 Datagram 或 Stream Socket 来传送资料。对 Datagram Socket 言,若是 datagram 的巨细高出限制,则将不会送出任何资料,并会传回错误值。若是传送 (transport) 系统内之储存空间不足存放这些要传送的资料,send() 将会被 block 住,除非该 Socket 被设定为 non-blocking 模式。利用者亦须留意 send()函式执行完成,并不暗示资料已经乐成地送抵对方了。 flags 的值可设为 MSG_DONTROUTE(*暂不提供此成果)及 MSG_OOB 的组合.
(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 的组合.