回复: 使用QTcpSocket对象write出现段错误
#11 回 angelus 的帖子 [介农酥 05-16 16:10]
angelus:链接:https://pan.baidu.com/s/1jyspf_pfiLHVBSDfFi6TZQ
提取码:uj32
这个是前几年写的一个教学用的程序,里边涉及了一个简单的聊天软件
....... (2019-05-16 13:22)
#12 回 angelus 的帖子 [介农酥 05-16 16:13]
angelus:思路其实很简单,把存储用户的socket指针存储到 静态容器中,然后加入锁,读写容器的时候加锁,在线程中是可以访问静态变量的,从中取出指针,然后调用指针中类的方法发送数据就行
容器推荐用QHash进行键值对存储,原则上来说 15万个 值,读的速度大概是查找1万个值,用时1毫秒.. (2019-05-16 13:34)
楼主,交个朋友
#13 [fsu0413 05-23 07:34]
重写incomingConnection其实也可以啊
参考Qt的文档,incomingConnection就是给你重写的
void QTcpServer::incomingConnection(qintptr socketDescriptor)
{
#if defined (QTCPSERVER_DEBUG)
qDebug("QTcpServer::incomingConnection(%i)", socketDescriptor);
#endif
QTcpSocket *socket = new QTcpSocket(this);
socket->setSocketDescriptor(socketDescriptor);
addPendingConnection(socket);
}
照着这个逻辑重写
#14 回 angelus 的帖子 [smile123 12-29 15:24]
angelus:基本都是这样 中转服务器模式,大差不差, 不过服务器一般用多线程处理,使用 void QTcpServer::incomingConnection(qintptr socketDescriptor) 函数,然后创建一个QHash保存键值对 方便进行索引,读写加锁。.. (2019-05-13 09:08)
聊天软件的链接失效的,能重新发下吗