http://blog.csdn.net/whatday/article/details/41723469 2014
一、 基本Socket函数
1.accept()* //响应连接请求,并且新建一个套接字,原来的套接口返回监听状态
accept(s: TSocket; addr: PSockAddr; addrlen: PInteger): TSocket; stdcall;
2.bind() // 把一个本地的名字和无名的套接字捆绑起来
bind(s: TSocket; var addr: TSockAddr; namelen: Integer): Integer; stdcall;
3.CloseSocket() //关闭套接字
closesocket(s: TSocket): Integer; stdcall;
4.Connect()* // 初始化到一个指定套接口上的链接
connect(s: TSocket; var name: TSockAddr; namelen: Integer): Integer; stdcall;
5.GetPeerName() //得到连接在指定套接口上的对等通信方的名字
GetPeerName(s: TSocket; var name: TSockAddr; var namelen: Integer): Integer; stdcall;
6.GetSockName() //得到指定套接口上当前的名字
getsockname(s: TSocket; var name: TSockAddr; var namelen: Integer): Integer; stdcall;
7.GetSockopt() //得到与制定套接口相关的属性选项
getsockopt(s: TSocket; level, optname: Integer; optval: PChar; var optlen: Integer): Integer; stdcall;
8.htonl() //把32位的数字从主机字节顺序转换到网络字节顺序
htonl(hostlong: u_long): u_long; stdcall;
9.htons() //把16位的数字从主机字节顺序转换到网络字节顺序
htons(hostshort: u_short): u_short; stdcall;
10.inet_addr() //把一个Internet标准的点分十进制地址转换成Internet地址数值
inet_addr(cp: PChar): u_long; stdcall;
11.inet_ntoa() //把Internet地址转换成点分十进制的字符串
inet_ntoa(inaddr: TInAddr): PChar; stdcall;
12.ioctlsocket() //为套接字提供控制
ioctlsocket(s: TSocket; cmd: DWORD; var arg: u_long): Integer; stdcall;
13.listen() //监听套接字上连接请求的到来
listen(s: TSocket; backlog: Integer): Integer; stdcall;
14.ntohl() //把32位的数字从网咯字节顺序转换为主机字节顺序
ntohl(netlong: u_long): u_long; stdcall;
15.ntohs() //把16位的数字从网咯字节顺序转换为主机字节顺序
ntohs(netshort: u_short): u_short; stdcall;
16.recv()* //从已经连接的套接字接受数据
recv(s: TSocket; var Buf; len, flags: Integer): Integer; stdcall;
17.recvfrom()* //从已连接的或没有连接的套接口接受数据
recvfrom(s: TSocket; var Buf; len, flags: Integer; var from: TSockAddr; var fromlen: Integer): Integer; stdcall;
18.select()* //执行同步IO多路复用
select(nfds: Integer; readfds, writefds, exceptfds: PFDSet;timeout: PTimeVal): Longint; stdcall;
19.send()* //从已连接的套几口发送数据
send(s: TSocket; var Buf; len, flags: Integer): Integer; stdcall;
20.sendto()* //从已连接的或没有连接的套接口发送数据
sendto(s: TSocket; var Buf; len, flags: Integer; var addrto: TSockAddr;tolen: Integer): Integer; stdcall;
21.setsockopt() //设置与指定套接口相关的属性选项
setsockopt(s: TSocket; level, optname: Integer; optval: PChar;optlen: Integer): Integer; stdcall;
22.shutdown() //关闭一部分全双工的链接
shutdown(s: TSocket; how: Integer): Integer; stdcall;
23.socket() //创建并返回一个socket
socket(af, Struct, protocol: Integer): TSocket; stdcall;
二、数据库函数
1.Gethostbyaddr()* //根据网络地址得到对应的名字(会有多个)和地址
Gethostbyaddr(addr: Pointer; len, Struct: Integer): PHostEnt; stdcall;
2.Gethostbyname()* //根据主机名得到对应的名字(会有多个)和地址
Gethostbyname(name: PChar): PHostEnt; stdcall;
3.gethostname() //得到本机主机名
gethostname(name: PChar; len: Integer): Integer; stdcall;
4.getservbyname()* //根据服务的名字得到对应的服务名和端口号
getservbyname(name, proto: PChar): PServEnt; stdcall;
5.getservbyport()* //根据端口号得到对应的服务名和端口号
getservbyport(port: Integer; proto: PChar): PServEnt; stdcall;
6.getprotobyname() //根据协议名得到对应的协议名和数值
getprotobyname(name: PChar): PProtoEnt; stdcall;
7.getprotobynumber() //根据端口号得到对应的协议名和数值
getprotobynumber(proto: Integer): PProtoEnt; stdcall;
三、其他函数
1.WSACleanup(); //初始化底层的windows Sockets DLL
2.WSAStartup //从底层的Sockets DLL中撤销注册
WSAStartup(wVersionRequired: word; var WSData: TWSAData): Integer; stdcall;
3.WSAAsyncSelect //Select函数的异步版本
WSAAsyncSelect(s: TSocket; HWindow: HWND; wMsg: u_int; lEvent: Longint): Integer; stdcall;
4.WSAIsBlocking //确定底层的winsock DLL是否在该线程已经被一个调用阻塞
WSAIsBlocking: BOOL; stdcall;
5.WSACancelBlockingCall //取消未完成的阻塞的API调用
WSACancelBlockingCall: Integer; stdcall;
6.WSASetBlockingHook //为底层的windows sockets实现设置阻塞钩子
WSASetBlockingHook(lpBlockFunc: TFarProc): TFarProc; stdcall;
7.WSASetLastError //设置下一次的WSAGetLastError返回的错误信息
WSASetLastError(iError: Integer); stdcall;
8.WSAGetLastError //得到最近的一个windows sockets API调用错误的详细信息
WSAGetLastError(iError: Integer); stdcall;
9.WSAUnhookBlockingHook //恢复原始的阻塞钩子
WSAUnhookBlockingHook: Integer; stdcall;
10.WSACancelAsyncRequest //取消一个未完成的 WSAAsyncGetXByY 函数的实例
WSACancelAsyncRequest(hAsyncTaskHandle: THandle): Integer; stdcall;
|