网络编程中,要了解阻塞模式和非阻塞模式。阻塞模式就是在阻塞时,程序不再响应用户请求,直到操作完成后才会相应。就像在调用发送数据到客户端时,如果客户端没用响应此操作,这个调用就会一直执行,直到完成操作。同时,Winsock提供了非阻塞模式,在非阻塞模式中有几种输入输出方式,常见的输入输出方式有3种。选择方式WSAAsyncSelect方式以及WSAEventSelect方式。Winsock的输入输出模型会选择哪个套接字有输入输出的时间。使用WSAAsyncSelect方式将非阻塞模式并不复杂,添加一个函数就够了。
int WSAAsyncSelect(SOCKET s, HWND hWnd, unsigned int wMsg, long lEvent);
该操作会会根据通信中的情况套选择成非阻塞模式,然后把套接字中被需要的消息,以窗口消息的形式发送到相应的函数窗体,我们所要做的便是在函数窗体中的消息处理函数中处理这些信息。变量hWnd被定义为接受消息的窗体句柄;变量wMsg被定义为消息码。变量IEvent被定义为所有我们想要得到的消息的,其内容有:
FD_READ, FD_WRITE, FD_OOB, FD_ACCEPT, FD_CONNECT, FD_CLOSE
在得到这些消息值后,便能够于窗口消息处理函数中编程完成想要的操作。比如说套接字a上发出存在在变量中的消息,程序所在的窗体会得到消息wMsg。参数wParam即为该事件相关的套接字s;变量lParam的低位指明了发生的消息,lParam的高位则含有一个错误码,事件和错误码可以通过下面的宏从lParam中取出:
#define WSAGETSELECTEVENT(lParam) LOWORD(lParam)
#define WSAGETSELECTERROR(lParam) HIWORD(lParam)
2。1。3 基本操作函数
Winsock的启动:WSAStartup();
Winsock的终止:WSACleanup();
Winsock的创建:socket();
Winsock的绑定:bind();
关闭套接字:closesocket();
侦听:listen();接受请求连接:accept();连接:connect();
2。1。4 Winsock网络应用程序的运行环境文献综述
1。开发Winsock网络应用程序应该采用支持Winsock API的Windows 98 SE 以上版本的操作系统。
2。采用可视化和面向对象技术的编程语言,例如Microsoft Visual c++ 6。0。
3。采用的网络通信协议一般是TCP/IP协议。
4。网络中所采用的计算机应满足操作系统运行的配置要求。网络中各个节点上的计算机需要安装网卡,并安装网卡的驱动程序。
5。要完成Winsock程序在数据通信消息传输,仅仅达到存储内容彼此共享并不满足条件,还必须在Windows控制中心里的网络配置中,增入TCP/IP协议,同时给定相应的IP地址,这些IP地址在所建的局域网中,不能有重复。
2.2 Visual C++概述
VisualC++以其强大的功能收到了很多程序员的青睐,Visual C++作为一种C/C++语言的集成开发环境(IDE),Visual C++6。0包括了许多新的特性,这些特性帮助了程序员创建了高性能的应用程序,效率要比以往任何时候都高[3]。Visual C++ 6。0 的新特有更快速的开发,更为庞大的编译吞吐量 ,能够轻松解决联合扩展现有部件,支持高性能数据通信。
Visual C++ 相对于原来的编程环境,增加了许多新的功能。这些功能帮助程序员创建了性能更好的程序。Visual C++ 6。0的新特性如下:
(1)能够更快速的开发来`自+优-尔^论:文,网www.youerw.com +QQ752018766-
(2)能使程序员在开发的同时边调试边进行写代码
(3)编译程序的时间得到了缩短
(4)支持基于以太网阅览器4。0的应用程序
(5)动态的classview更新
(6)支持企业级的应用程序的开发
除了主菜单和工具栏之外,Visual C++6。0开发环境还提供了大量的上下文关联菜单,用鼠标右击窗口的一些对象,都会弹出一个快捷菜单,里面包括与呗单机项目相关的各种命令。