首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从跟踪器响应中获取对端的IP和端口

如何从跟踪器响应中获取对端的IP和端口
EN

Stack Overflow用户
提问于 2018-05-12 22:25:42
回答 1查看 586关注 0票数 1

我用Qt编写了简单的torrent-client,我不知道如何从追踪器响应中获取对等体的I和端口。我成功地得到了响应,但是key peers的确切值看起来不可读:

代码语言:javascript
复制
d8:completei1976e10:incompletei54e8:intervali1800e5:peers6:TQ+ГХ§e

为什么它看起来是这样的,以及如何使这些数据可读?

在BitTorrent规范中,据说peers的值总是以大端字符顺序发送。我不知道这是否会成为不可读的原因,但我怀疑这一点。

EN

回答 1

Stack Overflow用户

发布于 2018-05-13 01:54:55

就像Encombe在评论中说的那样,它是BigEndian。您可以通过以下编程方式完成此操作:

代码语言:javascript
复制
QByteArray peerTmp = "TQ+ГХ§e";
QHostAddress host;
uchar *data = (uchar *)peerTmp.constData();
uint ipAddress = 0;
uint port = (int(data[4]) << 8) + data[5]; 
ipAddress += uint(data[0]) << 24;
ipAddress += uint(data[1]) << 16;
ipAddress += uint(data[2]) << 8;
ipAddress += uint(data[3]);
host.setAddress(ipAddress);
qDebug() << "IP" << host.toString() << ":" << port;

IP 84.81.XX.208:37840

或者如果你使用qFromBigEndian,也就是。

代码语言:javascript
复制
QHostAddress peerIPAddress(qFromBigEndian<qint32>("TQ+Г"));
qDebug() << "IP" << peerIPAddress.toString();

请参阅:http://doc.qt.io/qt-5/qtnetwork-torrent-trackerclient-cpp.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50307278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档