在QT中用TCP实现在聊天室邀请其他用户的c++代码
时间: 2024-03-12 18:50:19 浏览: 84
以下是一个简单的 QT TCP 聊天室服务端和客户端的示例代码,其中包含邀请其他用户的功能:
服务端代码:
```cpp
#include <QTcpServer>
#include <QTcpSocket>
#include <QList>
int main(int argc, char *argv[])
{
QTcpServer server;
QList<QTcpSocket*> clients;
// 监听本地地址和端口
server.listen(QHostAddress::LocalHost, 12345);
// 等待客户端连接
while (server.isListening()) {
// 接受新的客户端连接
QTcpSocket *clientSocket = server.nextPendingConnection();
clients.append(clientSocket);
// 接收客户端发送的消息
connect(clientSocket, &QTcpSocket::readyRead, [=]() {
// 读取消息
QByteArray message = clientSocket->readAll();
// 如果消息是邀请其他用户
if (message.startsWith("invite:")) {
QString username = message.mid(7);
for (QTcpSocket *other : clients) {
if (other != clientSocket) {
// 向其他客户端发送邀请消息
other->write(QString("invitation from %1").arg(username).toUtf8());
}
}
}
// 如果消息不是邀请其他用户,则将消息广播给其他客户端
else {
for (QTcpSocket *other : clients) {
if (other != clientSocket) {
other->write(message);
}
}
}
});
// 客户端断开连接时,从列表中删除
connect(clientSocket, &QTcpSocket::disconnected, [=]() {
clients.removeOne(clientSocket);
});
}
return 0;
}
```
客户端代码:
```cpp
#include <QTcpSocket>
int main(int argc, char *argv[])
{
QTcpSocket socket;
// 连接到服务端
socket.connectToHost(QHostAddress::LocalHost, 12345);
// 发送邀请消息
QString username = "Alice";
socket.write(QString("invite:%1").arg(username).toUtf8());
// 接收服务端发送的消息
connect(&socket, &QTcpSocket::readyRead, [=]() {
QByteArray message = socket.readAll();
qDebug() << message;
});
return 0;
}
```
在客户端发送邀请消息时,需要在消息前添加 "invite:" 前缀,服务端会解析该消息并向其他客户端广播邀请消息。
注意,该示例代码仅仅是一个简单的聊天室,如果需要更完善的聊天室功能,需要在服务端添加用户管理和权限控制等功能。
阅读全文