day_07_QT网络编程

来源:互联网 发布:动感影集制作软件 编辑:程序博客网 时间:2024/06/02 05:41

    • 十四QT网络编程
      • 1网络协议层次OSI七层
      • 2回顾Linux的socket编程
      • 3QT网络编程中相关类
        • 1QHostAddress封装一个IP
        • 2QAbstractSocket套接字类TCP和UDP都可以使用
      • 4QUdpSocketUDP编程
      • 5TCP编程
        • 1QTcpSocket建立TCP套接字
        • 2QTcpServer建立TCP服务器

十四、QT网络编程

1、网络协议层次(OSI七层)

… …

2、回顾Linux的socket编程

… …

3、QT网络编程中相关类

1)QHostAddress(封装一个IP)

2)QAbstractSocket(套接字类,TCP和UDP都可以使用)

bind(ip地址, 端口);connectToHost(ip地址, 端口);  // uc:connectdisconnectFromHost();  // 断开连接error();  // 获取网络异常原因state();  // 获取套接字连接状态bytesAvailable();  // 获取套接字等待读取的数据connected()[signal]  // 连接成功时发送disconnected()[signal]  // 断开连接时发送error(socketError)[signal]  // 网络异常时发送QIODevice::readyRead()[signal]  // 套接字有新的数据到来时被发送read/readAll();  // 读套接字的数据write();  // 发送数据

4、QUdpSocket(UDP编程)

hasPendingDatagrams();  // 判断当前套接字是否有等待读的数据包pendingDatagramSize();  // 获取等待的的数据包的大小readDatagram();  // 读数据包,类似recvfromwriteDatagram();  // 发送数据包

案例: UDP网络广播
1)发送广播消息
  a. 指定广播地址:255.255.255.255
  b. 指定广播端口:8888
  c. 输入广播消息,每隔1秒发送一次
  d. 工程名:Sender
  e. 类名:SenderDialog

2)接收广播消息
  a. 指定接收广播的端口号
  b. 接收广播消息并显示
  c. 工程名:Receiver
  d. 类名:ReceiverDialog

5、TCP编程

1)QTcpSocket,建立TCP套接字

2)QTcpServer,建立TCP服务器

// 有新的客户端和服务器建立连接时被发送newConnection()[signal]// 获取和客户端通信的套接字对象QTcpSocket* nextPendingConnection()

案例:网络聊天室
1)服务器
  a. 使用QTcpServer创建TCP服务器
  b. 保存所有和客户端通信的套接字
  c. 接收客户端聊天消息(read)
  d. 转发聊天消息给所有的客户端(write)
工程名:Server

2)客户端
  a. QTcpSocket建立TCP客户端
  b. 连接服务器(IP/Port)
  c. 发送聊天消息到服务器(write)
  d. 接收和显示聊天消息
工程名:Client

原创粉丝点击