永发信息网

2,4,4实验总结与思考windows套接字函数使用要求有初始化和释放的操作,如果没

答案:1  悬赏:10  手机版
解决时间 2021-01-27 06:34
  • 提问者网友:沉默菋噵
  • 2021-01-26 22:58
2,4,4实验总结与思考windows套接字函数使用要求有初始化和释放的操作,如果没
最佳答案
  • 五星知识达人网友:woshuo
  • 2021-01-26 23:28
套接字函数通常封装在Ws2_32.dll动态连接库中,头文件是winsock2.h,因此用户需要引用头文件和链接库
#include “winsock.h” //引用头文件
#pragma comment(lib,”ws2_32.lib”) //链接库文件
此外,使用套接库函数前需要初始化套接字,使用函数WSAStartup()实现,例如:
WSADATA wsd; //定义WSADATA对象
WSAStartup(MAKEWORd(2,2),&wsd); //初始化套接字
下面介绍一些套接字函数
1:WSAStartup函数:用于初始化动态连接库,而且不可或缺
int WSAStartup(WORD wVersionRequested,LPWSADATA lpWDADATA)
//用法参见前面几行代码
2:socket函数:用于创建一个套接字
SOCKET socket(int af, int type, int protocol)
Af:表示一个地址家族,通常是AF_INET
type:表示套接字类型,SOCK_STREAM:创建面向连接的流式套接字;SOCK_DGRAM:表示创建面向无连接的数据报套接字,SOCK_RAW:表示创原始套接
protocol:表示所用的协议,不指定时可以设置为0
函数的返回值是创建的套接字句柄。
3:bind函数:用于将套接字绑定到指定的端口和地址上
int bind(SOCKET s,const struct sockadddr FAR * name, int namelen)
s:表示套接字标志
name:是一个sockaddr结构指针,包含了端口和地址
namelen:确定name缓冲区长度
返回值:成功返回0;失败返回SOCKET_ERROR
4: listen函数:用于将套接字设置为监听模式。对于流式套接字必须是该模式
Int listen(SOCKET s, int backlog)
Backlog: 表示等待连接的最大队列长度
5:accept函数:用于接收客户端的链接
SOCKET accept(SOCKET s, struct sockaddr FAR *addr, int FAR * addlen)
S:一个套接字标志,应该处于监听状态
addr:包含一组客户端的端口和地址信息
addlen:用于接收参数addr的长度
返回值:一个新的套接字,它对应于已经接受的客户端连接,对于该客户端的所有后续操作,都应该使用这个新的套接字。
6:closesocket函数:关闭套接字。int closesocket(SOCKET s);
7:connect函数:用于发送一个连续请求
int connect(SOCKET s, const struct sockaddr FAR * name, int namelen)
name:表示套接字想链接的主机地址和端口号
namelen:表示缓冲区长度
成功返回0,否则为SOCKET_ERROR。
8:recv函数:用于从面向连接的套接字中接收数据
int recv(SOCKET s, char FAR *buf,int len, int flags)
buf:接收数据的缓冲区
len:buf的长度
flags表示函数的调用方式 MSG_PEEK:表示查看传来的数据,MSG_OOB表示用来处理外带数据
9:send函数:用于在面向连接方式的套接字间发送数据
int send(SOCKET s, const char FAR * buf, int len, int flags)
buf要发送数据缓冲区的大小
flags函数的调用方式
10:select函数:用来检查一个或多个套接字是否处于可读、可写或错误状态
Int select(int nfds,fd_set FAR *readfds, fd_set FAR *writefds,fd_set FAR * exceptfds, const struct timeval FAR * timeout)
nfds:无实际意义
readfds表示一组可读套接字
writefds表示一组可写套接字
exceptfds表示一组被检查有错误的套接字
timeout表示函数的等待时间
11:WSACleanup函数:用于释放从Ws2_32.dll动态连接库初始化分配的资源
Int WSACleanup(void)
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯