欢迎来到天天文库
浏览记录
ID:41033543
大小:24.03 KB
页数:7页
时间:2019-08-14
《用Visual C++ 40实现Windows 95 Socket编程》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、用VisualC++4.0实现Windows95Socket编程 Windows95Socket提供了在MicrosoftWindows95中进行网络程序设计的一个接口,它是在UnixSocket的基础上发展而来的,不仅保留了UnixSocket原有的风格,而且还融入了适合于Windows95的新特点,这使得用户可以利用Windows95SocketAPI直接进行进程与应用程序间的通信。Windows95在Internet支配域中的TCP/IP协议定义了Socket编写规程,使用Socket的目的是使用
2、户在网络协议上工作而不必对该网络协议有非常深入的了解。此外,这样编写的程序可被迅速移植到任何支持Socket的网络系统中去。 MicrosoftWindowsClassLibrary(MFC)中提供了CSocket类用来实现网络通信。图一中给出了CSocket类的继承关系。 下面将介绍用VisualC++4.0在Windows95中实现Socket的CSocket类相关成员函数(这些成员函数实际上是从CAsyncSocket类继承来的)。 (1)BOOLCreate(UINTnSocketPort=
3、0,intnSocketType=SOCK_STREAM,longlEvent=FD_READ
4、FD_WRITE
5、FD_OOB
6、FD_ACCEPT
7、FD_CONNECT
8、FD_CLOSE,LPCTSTRlpszSocketAddress=NULL) 该函数用来建立Socket。其中,nSocketPort为所选择的Socket端口,一般要大于1023,如果该参数为0,则由系统选定一端口,默认值为0;nSocketType为套接字类型:SOCK_STREAM表示为流套接字,SOCK_DGRAM表示为数据报
9、套接字,默认值为SOCK_STREAM;lEvent标识该Socket要完成哪种工作,默认值为FD_READ
10、FD_WRITE
11、FD_OOB
12、FD_ACCEPT
13、FD_CONNECT
14、FD_CLOSE;lpszSockAddress为网络地址信息结构指针,包含网络地址,默认值为NULL。 (2)BOOLBind(UINTnSocketPort,LPCTSTRlpszSocketAddress=NULL) 该函数的作用是将Socket端口与网络地址连接起来。参数含义同上。 (3)BOOLListen(
15、intnConnectionBacklog=5) 该函数的作用是等待Socket请求。其中,nConnec-tionBacklog表示等待队列的长度,默认值为最大值5。 (4)virtualBOOLAccept(CAsyncSocket&rConnectedSocket,SOCKADDR*lpSockAddr=NULL,int*lpSockAddrLen=NULL) 该函数的作用是取得队列上第一个连接请求并建立一个具有与Socket相同特性的套接字。其中,rConnectedSocket表示一个新的
16、Socket。 (5)BOOLConnect(LPCTSTRlpszHostAddress,UINTnHostPort) 该函数的作用是提出请求。其中,lpszHostAddress和nHostPort为接受请求进程的网络地址和Socket端口号。 (6)virtualvoidClose() 该函数的作用是关闭该Socket。 利用CSocket类直接进行数据通信有两种方式:一种是利用CSocketFile类和Archive类去实现,另一种是利用CSocket的成员函数Receive、Send、
17、ReceiveFrom、SendTo、Listen和Accept等来实现(这些成员函数实际上也是从CAsyncSocket类继承的)。 两种方法的实现步骤如下: Server:Construct->Creat->Bind->Listen->Accept->Send->Close; Cilent:Construct->Creat->Connect->Receive->Close。 下面我就用VisualC++4.0的代码段分别介绍如何运用上述两种方法来实现Socket编程。 1、利用CSocket
18、File类和Archive类实现 (1)Server //constructasocket CSocketsockSrvr; //createtheSOCKET sockSrvr.Create(nPort); //startlistening sockSrvr.Listen(); //constructanew,emptysocket CSocketsockRecv; //acceptconnection
此文档下载收益归作者所有