打印

关于QT中客服端程序局域网IP的setLocalAddress函数问题

[复制链接]
4005|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
乌月明星稀|  楼主 | 2014-7-1 15:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我是QT的初学者,我想用客户端用自己的一个IP地址连接到服务器,而那个IP地址是我人为设定的(可以理解为TCP的攻击),但我现在用QTcpSocket定义了tcpSocket对象,然后设定端口和IP地址,并连接到主机服务器上;我用qDebug查看了当前本地IP地址和端口号,跟我修改的目标IP和端口号是一致的,但连接到服务器,我服务器上看到的ip地址却是我电脑当前的局域网ip地址(说明,通信的时候,还是按照局域网ip连接出去的,而不是用我设定的那个IP);具体代码如下:
tcpSocket = new QTcpSocket(this);
tcpSocket ->setLocalAddress(*new QHostAddress("192.168.2.30"));
tcpSocket->setLocalPort(1222);
tcpSocket->connectToHost("192.168.1.117",55555);//其中192.168.1.117是我局域网的IP地址。我当前电脑用一个调试助手开启了个TCP Server;
qDebug() << "当前LocalAddress = "+tcpSocket->localAddress().toString();
qDebug() << "当前端点号为 :" + QString::number(tcpSocket->localPort());

结果,在我TCP Server中显示连接的设备IP地址为192.168.1.117,端口号是53420;并且依旧能通信;
问题:
1、正常的话,如果设定的ip地址是不可达到的话,压根就不可能握手成功啊!
2、这个IP地址到底什么回事?如果修改不成功,那Debug输出的信息为什么又是我修改的目标值?

相关帖子

沙发
zhangmangui| | 2014-7-1 23:06 | 只看该作者
非常喜欢   QT   没机会深入研究   顶顶

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
乌月明星稀 + 3 很给力!
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

127

帖子

1

粉丝