📄 d070.bmp.txt
字号:
函数进行重载,用户可以在应用程序中很方便地对套接字发送、接收数据等事件进行处理。
3.2实例4:Winsock API编程技术——基于Winsock的聊天室程序
为了让读者能快速、灵活地实现Winsock API编程,本节首先介绍Winsock API的基本
函数,然后以一个聊天室的实例来对这些知识进行总结,并在最后对该实例进行延伸和扩展,
将Winsock API封装成一个类,并基于该类重写了聊天室的程序,以便使读者能灵活运用。
3.2.1 Winsock基本的API
主要的系统调用函数如下所示。
●socket():创建Socket。
●bind():将创建的Socket与本地端口绑定。
●connect():与accept()-建立Socket连接。
●listen():服务器监听是否有连接请求。
●send():数据的可控缓冲发送。
●recv():可控缓冲接收。
●closesocket():关闭Socket。
以下便是Socket API的基本调用,附带的源码均为后续章节的核心代码。
1.Winsock的启动
Winsock是由DLL形式提供的模型,为了完成一系列初始化操作,每个Winsock的应
用程序都必须调用WSAStartup0.以建立与Windows Sockets DLL盼连接。
WSAStartup的函数原型为:
int WSAStartup( WORD wVersionRequested, LPWSADATA lpWSAData);
其中,wVersionRequested表示本程序所需要的最低版本号。lpWSAData返回WSADATA
结构,说明WinSock库当前的实现细节。
该函数成功时返回0,否则可能返回如下一些错误码:
●WSASYSNOTREADY,表示底层网络系统未准备好。
●WSAVERNOTSUPPORTED,表示所要求版本号本实现不支持。
●WSAEINPROGRESS,表示一个阻塞性套接字操作未完成。
●WSAEPROCLIM,表示达到当前实现所支持的最大任务数。
●WSAEFAULT,表示lpWSAData是一个非法指针。
一般用户可以不去关心实现细节,只要当前实现库满足最低版本需求即可。
2.创建套接字
每个套接字任务都从创建套接字开始。我们可以用socket函数来创建套接字,该函数的
原型为: 。
70
SOCKET socket( int a£int type, int protocol)
其中,af为地址族..说明该socket支持的地址类型。我们可以在文件winsock2.h中找
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -