当前位置: 代码迷 >> QT开发 >> Qt中采用TCP协议,怎么实现向特定的客户端发送信息
  详细解决方案

Qt中采用TCP协议,怎么实现向特定的客户端发送信息

热度:24   发布时间:2016-04-25 04:23:14.0
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();
}

各位高手,请帮忙解决下这个问题吧。谢谢了!
------解决方案--------------------
一般每个客户端登录后,就有一个登录名,或ID之类的。
在服务器上有纪录,那么你就可以让服务器给你中转了。
------解决方案--------------------
通过服务器中转
------解决方案--------------------
引用:
一般每个客户端登录后,就有一个登录名,或ID之类的。
在服务器上有纪录,那么你就可以让服务器给你中转了。

我也知道是让服务器去中转,但是在Qt里怎么实现呢?代码怎么写?我没找到相应的接口来实现这个,能否给出具体的代码。感激不尽啦!
------解决方案--------------------
有种协议叫jabber 也称为xmpp
可以参考下 专门做即时通讯的
------解决方案--------------------
能否给出具体的代码或者给个例子程序也行,这样只说说理论,我还是不知道我的这个功能该如何实现。
------解决方案--------------------
工程量有点大。。。

引用:
引用:一般每个客户端登录后,就有一个登录名,或ID之类的。
在服务器上有纪录,那么你就可以让服务器给你中转了。
我也知道是让服务器去中转,但是在Qt里怎么实现呢?代码怎么写?我没找到相应的接口来实现这个,能否给出具体的代码。感激不尽啦!



------解决方案--------------------
引用:
工程量有点大。。。

引用:引用:一般每个客户端登录后,就有一个登录名,或ID之类的。
在服务器上有纪录,那么你就可以让服务器给你中转了。
我也知道是让服务器去中转,但是在Qt里怎么实现呢?代码怎么写?我没找到相应的接口来实现这个,能否给出具体的代码。感激不尽啦!

那就用代码描述下大致的流程吧。非常感谢!
------解决方案--------------------
有哪位大侠能帮帮我啊。不胜感激啦!
------解决方案--------------------
居然没人回答!这个问题真那么难吗?
  相关解决方案