2 myy1994 myy1994 于 2016.01.25 16:29 提问

qt UDP 如何绑定目的ip
lineEdit = new QLineEdit(this);
QString ip_dest;
udpSocket=new QUdpSocket(this);
port=69; //tftp
ip_dest =lineEdit->text();
udpSocket->bind(ip_dest,port);

报错 :G:\qt\projects\test\test125\mainwindow.cpp:24: error: C2664: “bool QAbstractSocket::bind(const QHostAddress &,quint16,QAbstractSocket::BindMode)”: 不能将参数 1 从“QString”转换为“const QHostAddress &”
原因如下: 无法从“QString”转换为“const QHostAddress”
没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符

3个回答

caozhy
caozhy   Ds   Rxr 2016.01.25 22:28
已采纳

你的字符串不能之间转换为QAddress
需要这么写

 udpSocket->bind(new QHostAddress(ip_dest),port);
91program
91program   Ds   Rxr 2016.01.25 16:35

bind 的代码中哪里?没有看到。

myy1994
myy1994 udpSocket->bind(ip_dest,port); 我想从单行文本中输入 目的地ip 然后绑定到udp的套接字
2 年多之前 回复
91program
91program   Ds   Rxr 2016.01.25 16:50

Qt学习之路_4(Qt UDP的初步使用)

 udpSocket = new QUdpSocket(this);//创建一个QUdpSocket类对象,该类提供了Udp的许多相关操作
    port = 45454;
    //此处的bind是个重载函数,连接本机的port端口,采用ShareAddress模式(即允许其它的服务连接到相同的地址和端口,特别是
    //用在多客户端监听同一个服务器端口等时特别有效),和ReuseAddressHint模式(重新连接服务器)
    udpSocket->bind(port, QUdpSocket::ShareAddress | QUdpSocket::ReuseAddressHint);
    //readyRead()信号是每当有新的数据来临时就被触发
    connect(udpSocket, SIGNAL(readyRead()), this, SLOT(processPendingDatagrams()));

myy1994
myy1994 可是这样不能自己输入目的地IP啊
2 年多之前 回复
myy1994
myy1994 可是这样不能自己输入目的地IP啊
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Qt 绑定本机的ip
在qt中绑定本机IP,不需要写本机的ip地址 bind(port, QUdpSocket::ShareAddress |QUdpSocket::ReuseAddressHint);
UDP的socket绑定到IP地址后无法接受广播数据
UDP的socket绑定到IP地址后无法接受广播数据 fannyth 05-11-10, 18:37 由于考虑到我的程序要在多网卡的机器上运行,所以我将网卡的ip地址绑定到了socket server_addr.sin_addr.s_addr = inet_addr(servIP);但是这样就无法收到广播数据?同时我也绑定到了一个广播地址接受时发现没次客户端来的数据都连续接
bind端口复用(可重复绑定同ip同端口)
所谓绑定是指别人连接我只能通过我所绑定的端口,其实是说,你现在有这个端口开放了,人家可以连接到你的服务,也可以进行数据传输,但是也不一定要使用此端口进行传输,可能此端口只用于控制信息的传输端口 = 端口 + Ip TCP 三元组UDP 2元组默认情况下,一个线程的栈要预留1M的内存空间,而一个进程中可用的内存空间只有2G,所以理论上一个进程中最多可以开2048个线程,但是内存当然不可能完全拿来作线
UDP通信绑定指定IP
<br />由于测试需要,自己用vconfig在自己的虚拟机里添加了很多ip,实现不同Ip间的通信。UDP客户端向服务器发送报文时,绑定会有最近IP原则,比如,你机器上有如下几个IP:10.1.1.1   ,10.1.1.2 ,  10.1.1.50,  10.1.2.51 , 10.1.2.90  , 10.1.3.91 ,10.0.0.1, 192.168.42.137,现在要向192.168.42.1发送报文,系统会自动给你分配离192.168.42.1最近的ip 192.168.42.137绑定,如
qt udp/tcp 绑定发送源端口(Specify source UDP port when writing datagram)
在用qt发送udp协议的时候经常不仅仅需要制定接受端的端口,为了后续的处理还需要指定发送方的端口。通常我们使用udp写一个发送的数据的程序,使用如下的代码: QUdpSocket *client = new QUdpSocket(this); client->open(QIODevice::ReadWrite); client->connectToHost(hostIp, p
Qt使用UDP搜索同一个网段上一个组播的多个服务器数据和QUdpSocket的使用经验
今天在工作工作中遇到的问题时网络连接的问题,普通的客户端网络连接用Qt实现很简单,就是新建一个QTcoSocket/QUdpSocket,然后输入端口号和ip地址,建立三个信号和槽(连接、断开、读取)实现对应的槽函数即可。但是今天遇到的问题要求是在同一个网络里面有好的服务器,而且每一个服务器发送的UDP的IP地址和端口号相同,唯一识别它们不同的地方在于连接上UDP后发送的数据里面有TCP的地址,每一
关于绑定IP地址与端口号的见解
客户和服务器通过调用函数bind时可以指定IP地址或端口号,可以都指定,也可以都不指定,根据期望的结果,对sin_addr和sin_port,或sin6_addr和sin6_port应置为什么值,下面做了总结: 进程指定 结果 IP地址 端口 通配地址 0 内核选择IP地址和端口 通配地址 非0 内核选择IP地址,进程指定端口 本地IP地址 0 进程指定IP地址,内核选择
C# 中UDP通信时 发送数据并需要事先Bind IP地址
C#中进行UDP通信时,在发送数据的时候,如果不事先Bind一个IP地址,就会随机分配一个地址进行发送数据。发送端class Program { static Socket client; static void Main(string[] args) { client = new Socket(AddressFamil
QT 通过UDP广播获取网络中所有设备ip地址
说明:源码下载:提供源码下载地址,源码使用说明,先在需要获取IP地址的主机上运行server端程序,然后在需要搜索主机的Pc上运行client端程序本文是QT版本,有时候需要搜索网络中的设备,机器,服务器等,这就要要用到UDP广播的方式,发送广播命令,广播给网络中的每一个主机,该主机搜到广播命令后,立刻发送给请求端自己的设备信息,这里以IP信息为例子。思路在每一个设备中部署sever端程序进行监控,
TCP/UDP通信编程在Qt中的实现方法
【转载来自】https://blog.csdn.net/apollon_krj/article/details/72857828【转载来自】https://blog.csdn.net/apollon_krj/article/details/72857828一、TCP/UDP通信编程在Qt中的实现方法:与Linux的TCP/UDP通信接口(Socket套接字)类似,相当于是对LinuxSocket套...