第21章Linux网络通信高级编程Socket.pdf
《第21章Linux网络通信高级编程Socket.pdf》由会员分享,可在线阅读,更多相关《第21章Linux网络通信高级编程Socket.pdf(38页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Linux操作系统精讲操作系统精讲大连理工大学软件学院大连理工大学软件学院邱铁邱铁综合楼综合楼413,Tel:0411-87571632E_mail:参考教材:参考教材:?Linux应用与开发典型实例精讲邱铁、于玉龙、徐子川编著应用与开发典型实例精讲邱铁、于玉龙、徐子川编著.清华大学出版社清华大学出版社.2010.5第第13章 模块机制与操作章 模块机制与操作学习本章要达到的目标:学习本章要达到的目标:?1.了解网络通信的基本知识;了解网络通信的基本知识;?2.熟悉熟悉TCP协议的协议的Socket工作原理;工作原理;?3掌握在掌握在QT 4.5的网络通信操作接口;的网络通信操作接口;?4学会
2、在学会在QT 4.5下进行网络通信程序的编写方法。下进行网络通信程序的编写方法。21.1 网络编程概述网络编程概述?回顾OSI七层模型:?物理层物理层?数据链路层数据链路层?网络层网络层?传输层传输层?会话层会话层?表示层表示层?应用层应用层?TCP/IP四层结构四层结构?数据链路层数据链路层?数据链路层是实现网络通信的基础数据链路层是实现网络通信的基础?完成直连在同一网络中的不同计算机之间的通信完成直连在同一网络中的不同计算机之间的通信?它采用它采用MAC地址进行通信,地址进行通信,MAC地址是网络硬件设备在生产时所固定的地址地址是网络硬件设备在生产时所固定的地址?网络层网络层?网络层实现了
3、网络上任意两台计算机之间的通信网络层实现了网络上任意两台计算机之间的通信?一般采用可以方便路由的一般采用可以方便路由的IP地址作为通信地址地址作为通信地址?通过通过ARP协议同协议同MAC地址进行转换地址进行转换?TCP/IP四层结构(续)四层结构(续)?传输层传输层?实现了两个进程之间的通信实现了两个进程之间的通信?主要采用主要采用TCP协议和协议和UDP协议协议?采用采用IP地址与端口号(地址与端口号(Port)来进行通信)来进行通信?应用层应用层?在在TCP和和UDP协议之上实现的不同的协议,根据不同的应用存在有很多协议,为用户提供多种应用协议之上实现的不同的协议,根据不同的应用存在有很
4、多协议,为用户提供多种应用?例如例如HTTP、FTP、DNS、SSH等等等等?网络编程的实质就是在在传输层之上利用网络编程的实质就是在在传输层之上利用TCP协议或协议或UDP协议实现一种新的协议;或者直接利用现有的应用层协议实现一种应用协议实现一种新的协议;或者直接利用现有的应用层协议实现一种应用?两种开发模式两种开发模式?C/S模式模式?客户端客户端服务器模式服务器模式?B/S模式模式?浏览器浏览器服务器模式服务器模式21.2 Socket编程模型编程模型?Socket是一个是一个IP地址和一个端口的组合,它由操作系统分配,是一个通信句柄。地址和一个端口的组合,它由操作系统分配,是一个通信句
5、柄。?在进行网络通信的过程中,首先应用程序会申请一个在进行网络通信的过程中,首先应用程序会申请一个Socket,之后应用程序通过申请得到的,之后应用程序通过申请得到的Socket进行网络通信,通信结束后应用程序关闭进行网络通信,通信结束后应用程序关闭Socket,操作系统会做出相应的资源回收工作。,操作系统会做出相应的资源回收工作。?服务器端需要使用多线程技术以完成对多个客户端的同时服务服务器端需要使用多线程技术以完成对多个客户端的同时服务?Socket基本流程基本流程?首先要建立一个首先要建立一个Server(服务器),并设置服务器侦听的端口号(服务器),并设置服务器侦听的端口号?客户端向操
6、作系统申请一个客户端向操作系统申请一个Socket,并说明需要连接的目标,并说明需要连接的目标IP和端口号和端口号?客户端发起连接客户端发起连接?当服务器端的当服务器端的Server发现有连接请求以后,服务器端如果接受连接请求,会生成一个发现有连接请求以后,服务器端如果接受连接请求,会生成一个Socket,?双方通过各自的双方通过各自的Socket通信通信?如果通信完成,可单方关闭如果通信完成,可单方关闭Socket21.3 QT网络编程中用到的类和方法网络编程中用到的类和方法?Socket操作相关的类操作相关的类?QTcpSocket?QTcpServer?多线程操作相关的类多线程操作相关的
7、类?QThread21.3.1 QTcpSocket?定义头文件:定义头文件:QTcpSocket。?说明:说明:QTcpSocket很好的实现了很好的实现了TCP协议的面向连接和流传输等特性。协议的面向连接和流传输等特性。?主要方法:主要方法:?连接到服务器连接到服务器void connectToHost(const QString&hostName,quint16 port,OpenModeopenMode=ReadWrite);void connectToHost(const QHostAddress&address,quint16 port,OpenModeopenMode=ReadW
8、rite);?主要方法(续):主要方法(续):?与服务器中断连接与服务器中断连接void disconnectFromHost();?获取获取Socket连接状态连接状态SocketState state()const;?获取本地地址和端口获取本地地址和端口QHostAddress localAddress()const;quint16 localPort()const;?获取目标机的地址、名称和端口获取目标机的地址、名称和端口QHostAddress peerAddress()const;QString peerName()const;quint16 peerPort()const;?主要方
9、法(续):主要方法(续):?获取本地地址和端口获取本地地址和端口QHostAddress localAddress()const;quint16 localPort()const;?等待数据到达等待数据到达bool waitForReadyRead(int msecs=30000);?从缓冲流中读取一个字符从缓冲流中读取一个字符bool getChar(char*c);?向缓冲流中写入一个字符向缓冲流中写入一个字符bool putChar(char c);?主要方法(续):主要方法(续):?从缓冲流中读取一段数据从缓冲流中读取一段数据qint64 read(char*data,qint64 m
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 21 Linux 网络 通信 高级 编程 Socket
限制150内