{C++系列} QT day07 UDP网络广播,网络聊天室的实现
in C/C++ with 0 comment

{C++系列} QT day07 UDP网络广播,网络聊天室的实现

in C/C++ with 0 comment

回顾:
1 多线程
class XX:public QThread{

void run(void){
    //将被在线程中被执行
}

};
XX thread;
thread.start();
2 线程同步
1)互斥锁 QMutex
2)读写锁 QReadWriteLock
3)信号量 QSemaphore
4)条件变量 QWaitCondition

================================
今天:
一 QT网络编程
1 QHostAddress //IP地址
QHostAddress::LocalHost//"127.0.0.1"
QHostAddress::BroadCast//"255.255.255.255"
QHostAddress::AnyIPv4 //"0.0.0.0"

2 QAbstactSocket //套接字基类
1)bind()//绑定地址
2)connectToHost()//连接服务器
3)disconectFromHost()//断开连接
4)state()//获取套接字状态
5)bytesAvailable()//获取套接字等待读的数据字节数
6)connected()[signal]//连接成功时被发送
7)disconnected()[signal]//断开连接是被发送
8)error(QAbstractSocket::SockError)[sinal]//网络异常时被发送
9)readyRead()[signal]//当套接字有新数据到来将被发送
10)read()/readAll()//读操作
11)write()//写操作

3 QUdpSocket
1)hasPendingDatagrams();//判断是否有等待读的数据包
2)PendingDatagramSize();//获取等待读的数据包的大小
3)readDatagram();//读操作
4)writeDatagram();//写操作

《案例》UDP网络广播
mkidr UdpBoadcast
1)发送端
--》广播地址:“255.255.255.255”
--》指定广播端口:8888
--》通过界面输入广播消息,每个1秒广播一次
工程名:Sender
类名:SenderDialog

2)接收端
--》绑定接收广播消息的端口
--》接收广播消息显示界面
工程名:Receiver
类名:ReceiverDialog

4 QTcpServer/QTcpSocket
//设置服务器监听的地址和端口
listen(IP,port);
//当有客户端和服务器建立连接时被发送
newConnection()[singal]
//获取和客户端通信的套接字
QTcpSocket *nextPendingConnection()

《案例》网络聊天室
mkdir NetChat
1)服务器
--》使用QTcpServer创建tcp服务器
--》接收客户端发来的聊天消息
--》转发聊天消息给所有的在线客户端
工程名:Server
类名:ServerDialog

2)客户端
--》使用QTcpSocket创建和服务器通信的套接字
--》和服务器建立连接
--》获取用户输入的聊天消息发送到服务器
--》接收服务器返回其它客户端的聊天消息
--》显示聊天内容
工程名:Client
类名:ClientDialog

Responses