网络编程实用教程第二版_第5章.pptVIP

  • 1
  • 0
  • 约1.17万字
  • 约 78页
  • 2019-09-10 发布于辽宁
  • 举报
5.2.1 创建CSocket对象 分为两个步骤: (1)调用CSocket类的构造函数,创建一个空的CSocket对象。 (2)调用此CSocket对象的Create()成员函数,创建对象的底层套接字。调用格式是: BOOL Create( UINT nSocketPort = 端口号, Int nSocketPort = SOCK_STREAM | SOCK_DGRAM, LPCTSTR lpszSocketAddress = 套接字所用的网络地址 ); 如果打算使用CArchive对象和套接字一起进行数据传输工作,必须使用流式套接字。 5.2.2 建立连接 CSocket类使用基类CAsyncSocket的同名成员函数Connect()、Listen()、Accept()来建立服务器和客户机套接字之间的连接,使用方法相同。不同的是:CSocket类的Connect()和Accept()支持阻塞调用。比如:在调用Connect()函数时会发生阻塞,直到成功地建立了连接或有错误发生才返回,在多线程的应用程序中,一个线程发生阻塞,其他的线程仍能处理Windows事件。 CSocket对象从不调用OnConnect()事件处理函数。 5.2.3 发送和接收数据。 在创建CSocket类对象后,对于数据报套接字,直接使用CSocket类的SendTo()、ReceiveFrom()成员函数来发送和接收数据。对于流式套接字,首先在服务器和客户机之间建立连接,然后使用CSocket类的Send()、Receive()成员函数来发送和接收数据,它们的调用方式与CAsyncSocket类相同。? 不同的是:CSocket类的这些函数工作在阻塞的模式。比如,一旦调用了Send()函数,在所有的数据发送之前,程序或线程将处于阻塞的状态。一般将CSocket类与CArchive类和CSocketFile类结合,来发送和接收数据,这将使编程更为简单。 CSocket对象从不调用OnSend()事件处理函数。 5.2.4 CSocket类与CArchive类和CSocketFile类 使用CSocket类的最大优点在于,应用程序可以在连接的两端通过CArchive对象来进行数据传输。具体做法是: (1)创建CSocket类对象 (2)创建一个基于CSocketFile类的文件对象,并把它的指针传给上面的已创建的CSocket对象。 (3)分别创建用于输入和输出的CArchive对象,并将它们与这个CSocketFile文件对象连接。 (4)利用CArchive对象来发送和接收数据。 下面是一段示例代码: CSocket exSocket; // 创建一个空的CSocket对象。 CSocketFile* pExFile; // 定义一个CSocketFile对象指针。 CArchive* pCArchiveIn; // 定义一个用于输入的Carchive对象指针。 CArchive* pCArchiveOut;// 定义一个用于输出的Carchive对象指针。 exSocket.Create(); // 创建Csocket对象的底层套接字。 // 创建CSocketFile对象,并将CSocket对象的指针传递给它。 pExFile = new CSocketFile( exSocket,TRUE); //创建用于输入的CArchive对象 pCArchiveIn = new CArchive(pExFile, CArchive::load); //创建用于输出的CArchive对象。 pCArchiveOut = new CArchive(pExFile, CArchive::store); 图5.3 CSocket、CArchive和CSocketFile类在传输数据时的作用 5.2.5 关闭套接字和清除相关的对象, 在使用完CSocket对象以后,应用程序应调用它的Close()成员函数来释放套接字占用的系统资源,也可以调用它的ShutDown()成员函数来禁止套接字读写。而对于相应的CArchive对象、CSocketFile对象和CSocket对象,可以将它们销毁;也可以不作处理,因为当应用程序终止时,会自动调用这些对象的析构函数,从而释放这些对象占用的资源。 5.3 CSocket类的编程模型 下面给出针对流式套接字的CSocket类的编程模型。分为服务器端和客户端。 1.服务器端 (1)CSocket sockServ; // 创建空的服务器端监听套接字对象。 // 用众所周知的端口,创建监听套接字对象的底层套接字句柄。 (

文档评论(0)

1亿VIP精品文档

相关文档