服务器端:QTcpServer

【1】基本用法:创建一个QTcpServer,然后调用listen函数监听相应的地址和端口。当有客户端链接到服务器时,会有信号newConnection()产生。调用nextPendingConnection()接受一个挂起的TcpSocket连接,该函数返回一个指向QTcpSocket的指针,同时进入到QAbstractSocket::ConnectedState状态。这样就可以和客户端进行通信了。
如果错误发生,可以用函数serverError()返回错误类型,用errorString()返回错误提示字符串。
调用close使得QTcpServer停止监听连接请求。尽管QTcpServer使用了事件循环,但是可以不这么使用。利用waitForNewConnection(),该函数阻塞直到有连接可用或者时间超时。
【2】重要函数:
void incomingConnection (int socketDescriptor); 当一个连接可以用时,QTcpServer调用该函数。其基本过程是现创建一个QTcpSocket,设置描述符和保存到列表,最后发送newConnection() 事件消息。
QTcpSocket* QTcpServer::nextPendingConnection();返回下一个将要连接的QTcpSocket对象,该返回对象是QTcpServer的子对象,意味着如果删除了QTcpSServer,则删除了该对象。也可以在你不需要该对象时,将他删除掉,以免占用内存。
客户端:QTcpSocket,QAbstractSocket
【1】基本用法:在客户端创建一个QTcpSocket,然后用connectToHost函数向对应的主机和端口建立连接。任何时候,可以用state()查询状态,初始为UnconnectedState,然后调用连接函数之后,HostLookupState,如果连接成功进入ConnectedState,并且发送hostFound()信号。当连接建立,发送connected(),在任何状态下如果在错误发生error()信号发送。状态改变发送stateChanged()信号。如果QTcpSocket准备好可读可写,则isValid() 函数范围为真。
用read()和write()来读写,或者使用readLine()和readAll.当有数据到来的时候,系统会发送readyRead()信号。bytesAvailable()返回包的字节数,如果你不是一次性读完数据,新的数据包到来的时候将会附加到内部读缓存后面。setReadBufferSize()可以设置读缓存的大小。
用disconnectFromHost()关闭连接,进入ClosingState。当所有数据写入到socket,QAbstractSocket会关闭该台socket,同时发送disconnected()消息。如果想立即终止一个连接,放弃数据发送,调用abort().如果远程主机关闭连接,QAbstractSocket发送QAbstractSocket::RemoteHostClosedError错误,但是状态还停留在ConnectedState,然后发送disconnected()信号。
QAbstractSocket提供几个函数用来挂起调用线程,知道一定的信号发送,这些函数可以用来阻塞socket:
waitForConnected() 阻塞知道一个连接建立。
waitForReadyRead() 阻塞知道有新的数据可以读取。
waitForBytesWritten() 阻塞直到发送数据写道socket中。
waitForDisconnected() 阻塞知道链接关闭。

转载于:https://blog.51cto.com/4469442/1148414

QT 网络编程(1)相关推荐

  1. [Qt教程] 第31篇 网络(一)Qt网络编程简介

    [Qt教程] 第31篇 网络(一)Qt网络编程简介 楼主  发表于 2013-8-28 17:04:17 | 查看: 515| 回复: 0 Qt网络编程简介 版权声明 该文章原创于作者yafeilin ...

  2. Qt网络编程之实例一GET方式

    看了两天的Qt网络编程,其实主要就是看了看QNetworkAccessManager.QNetworkRequest和QNetworkReply这三个类的主要内容.在之前,Qt网络编程主要是使用QHt ...

  3. qt android 网络编程实例,QT网络编程Tcp下C/S架构的即时通信实例

    先写一个客户端,实现简单的,能加入聊天,以及加入服务器的界面. #ifndef TCPCLIENT_H #define TCPCLIENT_H #include #include #include # ...

  4. Qt网络编程——TCP

    Qt网络编程--TCP 1. 概念 2. 服务器 3. 客户端 4. TCP服务器和客户端互传文件 5. 资源下载 1. 概念 TCP(Transmission Control Protocol, 传 ...

  5. Qt网络编程实战之HTTP服务器-安晓辉-专题视频课程

    Qt网络编程实战之HTTP服务器-30196人已学习 课程介绍         设计了一个实用的HTTP服务器,基于Qt的网络框架实现.先详细介绍Qt的网络.IO.线程..自定义事件.配置文件等类库的 ...

  6. Qt网络编程电子白板

    Qt网络编程电子白板 2018-08-11 08:44:04 天行健_地势坤 阅读数 915更多 分类专栏: Qt 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原 ...

  7. qt网络编程之使用cookie和ssl

    文章目录 所使用的Qt版本:5.14.0 接收Cookies: 发送Cookies: 答案是:有7个(有多少个等号就有多少个cookie,每个cookie用 ; 分隔开来) 代码如下: 参考: 简 述 ...

  8. 第十四章:Qt网络编程

    回顾: 第一章:Qt的概述 第二章:在Ubuntu编写第一个Qt程序 第三章:Qt的字符串和字符编码 第四章:Qt的信号和槽 第五章:Qt容器窗口(父窗口) 第六章:面向对象的Qt编程 第七章:Qt设 ...

  9. Qt网络编程概述(一)

    分享主题 Qt网络编程概述(一) Qt网络编程之QTCPSocket和QTCPServer实例(二) Qt网络编程之QUdpSocket实例(三) Qt网络编程概述 QtNetWork模块提供了若干类 ...

  10. Qt网络编程-简易版UDP组播通信入门Demo(5)

    Qt网络编程-简易版UDP组播通信入门Demo(5)

最新文章

  1. 四大指标超现有模型!少样本的无监督图像翻译效果逆天| 技术头条
  2. python发邮件包含表格,在Python中在电子邮件正文中包含Excel表
  3. Asterisk拨号方案常用函数说明
  4. 纪念音视频界前辈-雷霄骅
  5. 【Fiddler篇】Stave插件之环境映射
  6. r语言导入ggplot2_【ggplot2】R语言:ggplot2包
  7. 英语总结系列(十九):七月英语Baby成长史
  8. 巧技拾遗 | JavaScript 中 Array.every 和 Array.map 的巧妙结合
  9. arm与linux些许问题,arm-linux中遇到的问题
  10. 12、设计模式-结构型模式-外观模式
  11. 28岁程序员期权过亿,彪悍从字节退休,网友:酸了酸了!
  12. android 测试js,Android 全自动js脚本测试 Appium教程——appium环境搭建(一)
  13. 用神经网络实现手写数字识别
  14. 计算组合数的三种方式
  15. 从外包、互联网到国有企业,再到研究生拟录取,三年时间让我悟出了自己人生的意义
  16. 通信中的MGF(矩生成函数)
  17. 爱拼车 android 源码,爱拼车 1.8.8
  18. mysql创建新用户
  19. 如何让BERT拥有视觉感知能力?两种方式将视频信息注入BERT
  20. [Linux]搭建Anki同步服务器(针对Anki2.0)

热门文章

  1. 百度链接提交php获取状态码,新网站,在百度提交了首页链接,但是一直没有收录,也没有爬虫抓取,怎么回事呢?(悬赏1元) - 搜外SEO问答...
  2. hanlp 词频统计_10.HanLP实现k均值--文本聚类
  3. php正则去除base64,使用PHP preg_match_all的正则表达式base64块
  4. 机器学习笔记(六)——朴素贝叶斯法的参数估计
  5. 2021年美食类短视频及直播营销趋势洞察
  6. 人类心理学中几乎没有人知道的东西是什么?
  7. 华为鸿蒙二代支持的手机,关于华为鸿蒙,国产厂商中只有2家表示支持
  8. 电脑闪屏是什么原因_啄木鸟家庭维修|液晶电视闪屏什么原因
  9. 边缘计算安全技术综述
  10. 《全数据时代的炼金师》全书语言生动、易懂