Qt模块化笔记之network——套接字Socket网络编程起步
来源:互联网 发布:sql数据库打不开怎么办 编辑:程序博客网 时间:2024/05/16 07:34
对Qt的套接字三说,有三大主角:QTcpSocket,QUdpSocket和QTcpServer。
套接字用来控制网络传输数据,可以将它比作电话机。参考百度百科的socket解释点击打开链接
TCP(Transmission Control Protocol,传输控制协议),是一种面向连接(连接导向)的、可靠的、基于字节流的传输层,在正式收发数据前,必须和对方建立可靠的连接。
UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去!
简单说,要准确完整地传输数据(如传输一个文件),使用QTcpSocket,只需要往外发送数据,而不管接收方是否收到数据,使用QUdpSocket。——————————————————————————————————————————————————————————————————
如何使用用socket:
QTcpSocket与QUdpSocket都继承自QAbstractSocket,而它又继承自QIODevice。故套接字的使用方式,像IO设备操作文件一样,具有一定相似性。
网络的"另一端"的socket可以看作一个IO设备,本地的socket可以通过网线向这个设备写入或读取数据,同样,反回来也可以。
可使用socket的 read(), write(), readLine()和readAll()从“另一端”获取或写入数据,也可以用getChar(), putChar(), and ungetChar()读取或写入单字节。
——————————————————————————————————————————————————————————————————
它们的具体联系:
——————————————————————————————————————————————————————————————————
继承自QAbstractSocket的QTcpSocket,没有新增什么函数或信号
以下查看QAbstractSocket,函数很多,可先粗略浏览下。
公有函数:
QAbstractSocket(SocketType socketType, QObject * parent)virtual~QAbstractSocket()virtual voidconnectToHost(const QString & hostName, quint16 port, OpenMode openMode = ReadWrite, NetworkLayerProtocol protocol = AnyIPProtocol)virtual voidconnectToHost(const QHostAddress & address, quint16 port, OpenMode openMode = ReadWrite)//连接至远程主机,这两个中一般用这个。boolbind(const QHostAddress & address, quint16 port = 0, BindMode mode = DefaultForPlatform)boolbind(quint16 port = 0, BindMode mode = DefaultForPlatform)voidsetPauseMode(PauseModes pauseMode)voidsetProxy(const QNetworkProxy & networkProxy)//为本socket设置个socket代理,即数据将先发送到代理服务器,再到另一端,保证安全。百度下……virtual voidsetReadBufferSize(qint64 size)virtual boolsetSocketDescriptor(qintptr socketDescriptor, SocketState socketState = ConnectedState, OpenMode openMode = ReadWrite)virtual voidsetSocketOption(QAbstractSocket::SocketOption option, const QVariant & value)voidabort()//停止,立即关闭socket连接virtual voidresume()boolflush()virtual voiddisconnectFromHost()//数据传输完成才关闭连接,SocketErrorerror() constSocketStatestate() constboolisValid() constQHostAddresslocalAddress() constquint16localPort() constQStringpeerName() const//远程主机名quint16peerPort() constQHostAddresspeerAddress() const//远程主机地址,IPPauseModespauseMode() constQNetworkProxyproxy() constqint64readBufferSize() constvirtual qintptrsocketDescriptor() constvirtual QVariantsocketOption(QAbstractSocket::SocketOption option)SocketTypesocketType() constvirtual boolwaitForConnected(int msecs = 30000)virtual boolwaitForDisconnected(int msecs = 30000)
Reimplemented Public Functions
virtual boolatEnd() constvirtual qint64bytesAvailable() constvirtual qint64bytesToWrite() constvirtual boolcanReadLine() constvirtual voidclose()virtual boolisSequential() constvirtual boolwaitForBytesWritten(int msecs = 30000)virtual boolwaitForReadyRead(int msecs = 30000)
Signals
voidconnected()//连接上时发出voiddisconnected()voiderror(QAbstractSocket::SocketError socketError)//出错voidhostFound()voidproxyAuthenticationRequired(const QNetworkProxy & proxy, QAuthenticator * authenticator)voidstateChanged(QAbstractSocket::SocketState socketState)//连接状态变化
voidsetLocalAddress(const QHostAddress & address)voidsetLocalPort(quint16 port)voidsetPeerAddress(const QHostAddress & address)voidsetPeerName(const QString & name)voidsetPeerPort(quint16 port)voidsetSocketError(SocketError socketError)voidsetSocketState(SocketState state)
Reimplemented Protected Functions
virtual qint64readData(char * data, qint64 maxSize)virtual qint64readLineData(char * data, qint64 maxlen)virtual qint64writeData(const char * data, qint64 size)
————————————————————————————————————————————————————————————
这么多函数,真是吓死人了。
- Qt模块化笔记之network——套接字Socket网络编程起步
- 网络编程——Socket(套接字)
- 网络编程笔记一、Socket套接字
- 网络套接字socket编程之TCP
- 网络套接字socket编程之UDP
- Windows Socket 网络编程—— 套接字编程原理
- 网络编程——Socket(Linux套接字编程)
- 网络编程——socket套接字编程(二)
- 网络编程——socket套接字编程(三)
- Qt模块化笔记之network——TcpServer与监听说明
- Qt模块化笔记之network——写第一个Tcp程序(1)
- Qt模块化笔记之network——写第一个Tcp程序(2)
- Qt模块化笔记之network——DNS域名系统与查询功能
- linux网络编程——套接字(socket)入门
- 网络编程socket套接字
- Java编程思想之网络编程(二)套接字Socket
- Java网络编程之套接字(Socket编程)
- socket 套接字编程笔记——IP地址转换
- linux下一脚本自动交互执行小例(expect)
- Android开发----setRequestedOrientation
- VC代码解读,新建或者打开EXCEL文件
- 这是谁的失败
- openfire插件开发,扩展方式
- Qt模块化笔记之network——套接字Socket网络编程起步
- Java heap的实现 最小堆的实现 代码简洁
- IE7 與 IE8 上的 :nth-child
- CentOS下JDK、Tomcat、Ant的安装与配置
- Android四大基本组件介绍与生命周期
- 关于热插拔usb
- js数组删除元素问题
- 如何打一手好Log
- IoC框架