C语言网络知识:套接字库函数(容…

来源:互联网 发布:万方数据库论文检索 编辑:程序博客网 时间:2024/06/05 09:56
1、WSAStartup函数
  该函数用于初始化Ws2_32.dll动态链接库。在使用套接字函数之前,一定要初始化Ws2_32.dll动态链接库。
  intWSAStartup(WORD wVersionRequested,LPWSADATAlpWSAData);
  •  wVersionRequested:表示调用者使用的WindowsSocket的版本,高字节记录修订版本,低字节记录主版本。
  • lpWSAData:是一个WSAData结构指针。
2、socket函数
   该函数用于创建一个套接字。
   SOCKET socket(int af,int type,intprotocol);
  •    af:表示一个地址家族,通常为AF_INET;
  • type:表示套接字类型。如果为SCOK_STREAM,拜师创建面向连接的流式套接字;SOCK_DGRAM,表示创建面向无连接的数据报套接字;SOCK_RAW,表示创建原始套接字。
  • protocol:表示套接口所用的协议,如果用户不指定,可以设置为0;
  • 返回值:函数返回值是创建的套接字句柄。
3、bind函数
该函数用于将套接字绑定到指定的端口和地址上。
int bind(SCOKET s, const struct sockaddr FAR* name,intnamelen);
  • s:表示套接字标识。
  • name:是一个sockaddr结构指针,该结构中包含要结合的地址和端口号。
  • namelen:确定name缓冲区的长度。
  • 返回值:如果函数执行成功,返回值为0,否则为SOCKET_ERROR。
4、listen函数
该函数用于将套接字设置为监听模式。对于流式套接字,必须处于监听模式才能够接受客户端套接字的连接。
int listen(SOCKET s,int backlog);
✪ s:表示套接字标识。
✪ backlog:表示等待连接的最大队列长度。
5、accept函数
该函数用于接收客户端的连接。在流式套接字中,只有在套接字处于监听状态时,才能够接受客户端的连接。
SOCKET accpet(SOCKET s,struct sockaddr FAR* addr,int FAR*addre);
✪s:一个套接字,他应用于监听状态。
✪addr:一个sockaddr_in结构指针,包含一组客户端的端口号、IP地址等信息。
✪addrlen:用于接收参数addr的长度。
✪返回值:一个新的套接字,它对应于已经接受的客户端连接,对于该客户端的所有后续操作,都应使用这个新的套接字。

6、closesocket函数
该函数用于关闭套接字。
int closesocket(SOCKET s);
✪s:标识一个套接字。如果参数s设置为SO_DONTLINGER,z则调用该函数后会立即返回;但此时如果有数据尚未传送完毕,会继续传递数据,然后才关闭套接字。

7、connect函数
该函数用于发送一个连接请求。
int connect(SOCKET s,const struct sockaddr FAR * name,intnamelen);
✪s:表示一个套接字。
✪name:表示套接字s想要连接的主机地址和端口号。
✪namelen:name缓冲区的长度。
✪返回值:如果函数执行成功,返回值为0,否则为SOCKET_ERROR.

8、htons函数
该函数用于将一个16位的无符号短整型数据由主机排列方式转换成网络排列方式。
u_short htons(u_short hostshort);
✪hostshort:一个主机排列方式的无符号短整型数据。
✪返回值:函数返回值是16位的网络排列方式数据。

9、htonl函数
该函数用于将一个无符号长整形数据由主机排列方式转换成网络排列方式。
u_long htonl(u_long hostlong);
✪hostlong:表示一个逐级排列方式的无符号长整形数据。
✪返回值:32位的网络排列方式数据。

10、inet_addr函数
该函数用于将一个由字符串表示的地址转换成32位的无符号长整形数据。
unsigned long inet_addr(const char FAR * cp);
✪cp:表示一个IP地址的字符串。
✪返回值:32位无符号长整形数。

11、recv函数
该函数用于从面向连接的套接字中接收数据。
int recv(SOCKET s,char FAR *buf,int len,int flags);
✪s:一个套接字。
✪buf:接收数据的缓冲区。
✪len:buf长度。
✪flags:表示函数的调用方式。如果为MSG_PEEK,表示查看传来的数据,在序列前端的数据会被复制一份返回到缓冲区中,但是这个数据不会从序列中移走;如果为MSG_OOB,表示用来处理Out-Of-Band数据,也就是外带数据。

12、send函数
该函数用于在面向连接方式的套接字间发送数据。
int send(SOCKET s,const char FAR *buf,int len,intflags);
✪s:一个套接字。
✪buf:存放要发送数据的缓冲区。
✪len:缓冲区长度。
✪flags:函数的调用方式。

13、WSACleanup函数
该函数用于释放Ws2_32.dll动态链接库初始化时分配的资源。
int WSACleanup(void);
WSACleanup函数和WSAStartup函数是成对出现的。