荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: oopilix (。。), 信区: Visual
标  题: [zz]Winsock API 函数大全 2
发信站: 荔园晨风BBS站 (Sat Oct  4 18:29:18 2003), 站内信件

系统(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)

(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() 可得知原因)
说明: 此函式适用於连接式的 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 来传送资料到指定的位址。对


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店