效果演示
网络聊天室
Qt网络聊天室服务端
网络聊天室程序
-
基于TCP的可靠连接
(QTcpServer、QTcpSocket)
-
一个服务器,多个客户端
3. 服务器接收到某个客户端的请求以及发送信息,经服务器发给其它客户端 最终实现一个共享聊天内容的聊天室!
QTcpServer
提供一个TCP基础服务类 继承自QObject,这个类用来接收到来的TCP连接,可以指定TCP端口或者用QTcpServer自己挑选一个端口,可以监听一个指定的地址或者所有的机器地址。
QTcpServer的信号:
newConnection()//有新连接连接时触发该信号
配置
pro文件添加
QT += network
获取当前设备所有ip地址
枚举设备所有ip地址
QList<QHostAddress> ipList = QNetworkInterface::allAddresses();
QStringList addressStrList;
addressStrList.clear();
for(int index = 0;index<ipList.size();index++)
{
if(ipList.at(index).isNull()) continue; //如果地址为空,则去掉
QAbstractSocket::NetworkLayerProtocol protocol = ipList.at(index).protocol();
if(protocol != QAbstractSocket::IPv4Protocol) continue; //只取IPV4的地址
addressStrList.append(ipList.at(index).toString());
}
ui->comboBox_Address->addItems(addressStrList);
listen() close()
调用
listen()
来监听所有的连接 调用close()
来关闭套接字,停止对连接的监听。
如果监听有错误,serverError()
返回错误的类型。调用errorString()
来把错误打印出来
bool isListening() const
当服务端正在监听连接时候返回真,否则返回假
QString serverAddressStr = ui->comboBox_Address->currentText(); //获取服务器ip地址