当前位置: 代码迷 >> QT开发 >> QT TCPserver怎么获得客户端名称信息
  详细解决方案

QT TCPserver怎么获得客户端名称信息

热度:42   发布时间:2016-04-25 04:47:24.0
QT TCPserver如何获得客户端名称信息
对于多用户的程序,
TcpClient端在连接后立即发送自己的用户名,TcpServer端如何获得该信息并存储,而与客户端发送的其他信息分开?

------解决方案--------------------
peerName(), peerAddress(), peerPort()

保持连接状态时调用这几个方法就能知道客户端信息了
------解决方案--------------------
楼主的思路似乎有问题,QTcpSocket本来就是一对一的连接,它们的数据都完全独立,不存在数据混在一起发的情况。

你如果仅仅想做个标识,那方法有很多,比如为让客户端上报一个唯一的用户名,再比如用个静态变量做计数器,来一个连接就加1,这有点类似session ID。

也可以混合使用,比如peerAddress + sessionID,那你显示出来的内容可能就是这样的:
192.168.1.2(1234): 连接成功
192.168.1.2(1235): 连接成功
192.168.1.2(1234): 发送数据
192.168.1.2(1235): 发送数据
192.168.1.2(1235): 断开连接
192.168.1.2(1234): 断开连接
------解决方案--------------------
长连接就是客户端是一直与服务器保持着连接。短连接只在有需要的时候才连服务器,获得信息后断开,再想要数据是就得重新连。
------解决方案--------------------
可我还是不明白你的意思,我认为你的这个需求应该在客户端和服务器的通信协议里定义。

你可以使用XML来和服务器交互,在里面携带用户名。这与Qt的类什么的都没有关系,而是在你的设计上。