- 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; // 创建空的服务器端监听套接字对象。 // 用众所周知的端口,创建监听套接字对象的底层套接字句柄。 (
您可能关注的文档
- 网络编程实用教程第二版_第1章.ppt
- 网络编程实用教程第二版_第2章.ppt
- 网络编程实用教程第二版_第3章.ppt
- 网络编程实用教程第二版_第4章.ppt
- 网络编程实用教程第二版_第6章.ppt
- 网络编程实用教程第二版_第7章.ppt
- 网络编程实用教程第二版_第8章.ppt
- 网络编程实用教程第二版_第9章.ppt
- 网络编程实用教程第二版_第10章.ppt
- 网络编辑实务1课程解析.ppt
- 良肢位摆放在骨科康复中的应用.ppt
- 2026精选人教版一年级上册数学期末考试试卷(3套含答案解析).docx
- 2026新版人教版三年级上册语文期末考试试卷(3套含答案解析).pdf
- 2026精选人教版四年级上册英语期末考试试卷(3套含答案解析).pdf
- 2026新版人教版三年级上册数学期末考试试卷(3套含答案解析).pdf
- 2026新版人教版三年级下册数学期末考试试卷(3套含答案解析).docx
- 2026精选人教版四年级上册英语期末考试试卷(3套含答案解析).docx
- 2026新版人教版三年级上册语文期末考试试卷(3套含答案解析).docx
- 良肢位摆放与康复训练的结合.ppt
- 良肢位摆放在儿童康复中的应用.ppt
最近下载
- 生死二十八天.docx VIP
- 《水浒传》知识竞赛200题.doc VIP
- 李可六经临床方剂参考(摘自孙其新《李可六经辨证学》.pdf VIP
- 2025年高考数学第一轮复习考点讲与练第06讲平面向量中的范围与最值问题(高阶拓展、竞赛适用)(学生版+解析).docx VIP
- 2025年高考数学第一轮复习考点讲与练第13讲泰勒展开式及相关不等式放缩在导数中的应用(高阶拓展、竞赛适用)(学生版+解析).docx VIP
- 高考数学第一轮复习(新教材新高考)专题06权方和不等式(高阶拓展)(核心考点精讲精练)(学生版+解析).docx VIP
- 2026年熔化焊接与热切割考试试题及解析.docx VIP
- 高考数学第一轮复习(新教材新高考)第02讲平面向量的数量积(核心考点精讲精练)(学生版+解析).docx VIP
- 电气装置安装工程-低压电器施工及验收规范GB50254.doc VIP
- 2025年高考数学第一轮复习考点讲与练第05讲平面向量之极化恒等式(高阶拓展、竞赛适用)(学生版+解析).docx VIP
原创力文档

文档评论(0)