使用QT编写的TCP服务程序,如何获取连接的客户端IP地址?

andyfly01 2012-06-14 01:41:16
同标题
...全文
3085 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
andyfly01 2012-06-14
  • 打赏
  • 举报
回复
解决了,原来之前我就找对了,但是犯了个低级错误,一直在本机运行的客户端。。。。
方法就是
QTcpSocket::peerAddress()
谢谢 结贴了
addfourliu 2012-06-14
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
试了一下 但是没想到该怎么用,我现在继承QTcpServer类,并且重写了incomingConnection方法,在这里创建了一个线程
ProcessThread *thread = new ProcessThread(this,socketDescriptor);//this就是QTcpServer对象
然后在run方法里是这样写的
void ProcessThread::run()
……
[/Quote]
这。。。
QTcpSocket * socket = tcpServer->nextPendingConnection();
qDebug() << "aaaaaaa = " << clientConnection ->peerAddress().toString();
andyfly01 2012-06-14
  • 打赏
  • 举报
回复
我想获取的是客户端的地址 不是服务器的
andyfly01 2012-06-14
  • 打赏
  • 举报
回复
线程类的构造初始化的
this->tcpServer = (QTcpServer * )parent;
andyfly01 2012-06-14
  • 打赏
  • 举报
回复
试了一下 但是没想到该怎么用,我现在继承QTcpServer类,并且重写了incomingConnection方法,在这里创建了一个线程
ProcessThread *thread = new ProcessThread(this,socketDescriptor);//this就是QTcpServer对象
然后在run方法里是这样写的
void ProcessThread::run()
{
this->clientConnection = new QTcpSocket();
if (!this->clientConnection->setSocketDescriptor(this->SocketDescriptor)) {
qDebug() << "clientConnection.error() : ";
return;
}
QTcpSocket * socket = tcpServer->nextPendingConnection();
qDebug() << "aaaaaaa = " << socket->peerAddress().toString();
}
不知道对不对?
addfourliu 2012-06-14
  • 打赏
  • 举报
回复
你确定你是用的服务端的socket么?获取本地的Ip,有专门的函数localAddress()...
andyfly01 2012-06-14
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
引用 1 楼 的回复:
QTcpSocket * QTcpServer::nextPendingConnection ()
QHostAddress QAbstractSocket::peerAddress ()

nextPendingConnection () 我用的4.8的API 没有这个函数
peerAddress ()函数我试过了 获取的是本地的IP不是客户端的IP
不知道我……
[/Quote]
nextPendingConnection ()有这个函数,之前看错了
我试试
wshn13 2012-06-14
  • 打赏
  • 举报
回复
http://qt-project.org/doc/qt-4.8/qtcpserver.html#nextPendingConnection
这个不是吗?
andyfly01 2012-06-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
QTcpSocket * QTcpServer::nextPendingConnection ()
QHostAddress QAbstractSocket::peerAddress ()
[/Quote]
nextPendingConnection () 我用的4.8的API 没有这个函数
peerAddress ()函数我试过了 获取的是本地的IP不是客户端的IP
不知道我说的对不对 在线等
addfourliu 2012-06-14
  • 打赏
  • 举报
回复
QHostAddress QAbstractSocket::peerAddress ()
wshn13 2012-06-14
  • 打赏
  • 举报
回复
QTcpSocket * QTcpServer::nextPendingConnection ()
QHostAddress QAbstractSocket::peerAddress ()

21,480

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧