QTcpServer绑定本机的公网IP地址不成功

「已注销」 2012-09-19 07:31:43
奇了怪了,我已经在家里局域网的路由器上的转发规则,虚拟服务器中添加了本机的静态IP地址192.168.1.100以及8521端口。然后我就

internetOP.tcpServer=new QTcpServer(this);//--tcp

IsListen = internetOP.tcpServer->listen(QHostAddress("185.73.187.221"),8521);

185.73.187.221这个是我在百度查到的本机公网IP,然后我运行起来发现listen函数失败,但如果我把它换成了静态的192.168.1.100就成功,请问怎么改?

void MainWindow::on_pushButton_2_clicked()
{
MyIp =ui->le_setServerIp->text();//我在编辑框中输入公网地址185.73.187.221绑定不成功,但如果是静态的192.168.1.100就成功.
/*绑定服务器端口*/
//internetOP.tcpServer->deleteLater();
internetOP.tcpServer->close();
internetOP.tcpServer=new QTcpServer(this);//--tcp
IsListen = internetOP.tcpServer->listen(QHostAddress(MyIp),8521);
//测试绑定
if(IsListen)
{
ui->lb_testMessage2->setText("listen OK:"+MyIp);
}
else
{
ui->lb_testMessage2->setText("listen fail:"+MyIp);
}
}

请问如何才能绑定成功?我想我的客户端在外网也能和局域网内的服务端通讯,但现在服务端连自己本机的公网IP都不能绑定,怎么办?麻烦各位帮帮忙了。
...全文
423 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
雲天之巔 2012-09-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

引用 1 楼 的回复:

你是用了路由器?

185.73.187.221那么这个地址是分配给路由器的 路由器只是给你分配一个端口而已

再说了 TCP协议的话 不用绑定IP的 只需监听某个端口就行了

还是不太明白,能具体点说说吗?或者代码里怎么修改?
[/Quote]



m_tcpServer = new QTcpServer(this);
m_tcpServer->listen(QHostAddress::Any,19999); //监听任何连上19999端口的ip

这样就可以了。

「已注销」 2012-09-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

你是用了路由器?

185.73.187.221那么这个地址是分配给路由器的 路由器只是给你分配一个端口而已

再说了 TCP协议的话 不用绑定IP的 只需监听某个端口就行了
[/Quote]
还是不太明白,能具体点说说吗?或者代码里怎么修改?
雲天之巔 2012-09-19
  • 打赏
  • 举报
回复
你是用了路由器?

185.73.187.221那么这个地址是分配给路由器的 路由器只是给你分配一个端口而已

再说了 TCP协议的话 不用绑定IP的 只需监听某个端口就行了

16,216

社区成员

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

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