Qt中采用TCP协议,如何实现向特定的客户端发送信息
各位大家好!我自己写了个简单的发送文字信息的程序,采用的是TCP协议。现在我实现了从客户端向服务器发送信息,或者从服务器向客户端发送信息。现在我想实现把信息发送给特定的其它客户端,而不止是发给服务器。比如,有个客户端A连接上了服务器,这个时候客户端A能向服务器发送信息,服务器也能向客户端A发送信息。同样的,这个时候有个客户端B也连接上了服务器。这时,客户端B能向服务器发送信息,服务器也能向客户端B发送信息。那么,现在我如何实现把客户端A发送的信息发送给客户端B呢?又如何实现把客户端A的信息发送给其它所有已经连接上服务器的客户端呢?
我采用了多线程来实现这个通信,每当有新的连接,服务器就会启动一个新线程和客户端去交互,这么做是为了提高程序的效率。部分代码如下:
void NetChatServer::incomingConnection(int handle)
{
qDebug("NetChatServer::incomingConnection...");
qDebug() << "客户端:" << handle;
thread = new ClientSocketThread(handle);
thread->start();
}
void ClientSocketThread::run()
{
cs = new ClientSocket;
cs->setSocketDescriptor(socketDescriptor);
connect(cs, SIGNAL(readyRead()), cs, SLOT(recvMessageFromClient()));
connect(cs, SIGNAL(disconnected()), cs, SLOT(deleteLater()));
exec();
}