• 4028阅读
  • 1回复

多线程服务器的问题,大家再来探讨 [复制链接]

上一主题 下一主题
离线succulent
 
只看楼主 倒序阅读 楼主  发表于: 2008-11-20
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
建立完了多线程服务器
在子线程中启动一个tcpsocket
从主线程向子线程发送信号,子线程能顺利接收,一切ok

当打算在主线程中对子线程里建立的这个tcpsocket进行操作时,问题出现了

子线程原来有一个函数run,在run里QTcpSocket  tcpSocket之后,就可以对socket进行操作
但现在为了接受主线程传递过来的信号,又建立了一个函数recinfo
那么
怎么在函数recnfo里对函数run的这个tcpSocket进行操作???
把QTcpSocket  tcpSocket移到类中的private,是不行的,必须在run里面定义这个实例
那有别的其他什么办法吗
离线succulent
只看该作者 1楼 发表于: 2008-11-21
大家看我这个思路是否可行
在fortunethread::run里
QTcpsocket tcpsocket
然后与客户端进行连接
连接成功后,把(&tcpsocket)  连同客户端的ip地址一起emit出去
在外部建立一个buffer,存储(&tcpsocket)  与客户端的ip地址
假如同10个客户端建立了连接,那么就存储十对这样的数据
需要对相应的客户端进行控制时,就根据ip地址来进行查找,首先找到这个buffer,把这个ip地址对应的(&tcpsocket) 也一起找出来,然后再找到相应的线程,就可以根据当时的(&tcpsocket) 进行操作了,这样有什么原理上的错误吗
快速回复
限100 字节
 
上一个 下一个