Qt编程 (四)

一、线程同步
    1、互斥量(互斥锁)
    QMutex 就是POSIX中的pthread_mutex_t的封装
    常用的两个成员函数 lock,unlock

    2、读写锁
    QReadWriteLock  它比QMutex更实用
    常用的三个成员函数: lockForRead lockForWrite unlock
    A读 B读  OK
    A写 B读   NO
    A写 B写    NO

    3、信号量
    QSemaphore 用于管理多个资源
    QSemaphore 构造时设置资源数量
        acquire(n)  获取资源  减去资源数   如果不够减则等待
        release(n)  归还资源  加上资源数

二、网络通信
    使用网络模块前要先在.pro文件中添加network
    QT       += core gui network
    QUdpSocket类是Qt对UDP协议加socket的封装
    1、创建QUdpSocket类对象
    2、绑定ip地址和端口号
    3、连接readyRead() 信号,当此信号来发射后,就表示可以接受数据了
    4、在槽函数中调用readDatagram函数接收数据

qint64 QUdpSocket::readDatagram ( char * data, qint64 maxSize, QHostAddress * address = 0, quint16 * port = 0 )

host:发者的地址
port:返回时的端口号
    5、返回数据
    qint64 QUdpSocket::writeDatagram ( const char * data, qint64 size, const QHostAddress & address, quint16 port )
    host和port是readDatagram函数接收到的
    注意:每个QUdpSocket对象都需要绑定一个地址和端口号

    

Qt中封装了TCP协议 QTcpServer类负责服务端:
    1、创建QTcpServer对象
    2、监听listen需要的参数是地址和端口号
    3、当有新的客户端连接成功时会发射newConnection信号
    4、在newConnection信号的槽函数中,调用nextPendingConnection函数获取新的连接QTcpSocket对象
    5、连接QTcpSocket对象的readyRead信号
    6、在readyRead信号的槽函数使用read接收数据
    7、调用write成员函数发送数据


QTcpSocket负责客户端
    1、创建qTcpSocket对象
    2、当对象与Server连接成功时会发射connected信号
    3、调用成员函数connectToHost连接服务器,需要的参数是地址和端口号
    4、connected信号的槽函数中开启发送数据
    5、使用write发送数据,read接收数据


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值