Unsolved Can we do IP scanning using QT
-
@jsulm I want to find the server without knowing its ip and connect with it and i want it in TCP
-
@ManiRon Well, you can try to connect to all valid IP addresses in your network (subnet mask defines valid IPs), but that can take time.
-
@jsulm Ya i tried it and it takes time , thats why i am looking for an alternative
-
@ManiRon Alternative is service discovery (or UDP broadcast, after broadcast you can do TCP as usual)...
-
@jsulm said in Can we do IP scanning using QT:
But for UDP broadcast i might have to implement some coding on my server side , which i might not be able to do . whether we can use UDP broadcast without modifying the server side
-
@ManiRon Can't you give your server a DNS name? And then simply connect to that name instead of an IP?
-
@jsulm I have to check this way , will there be any samples available ?
-
You can try to use the nmap utility or its library to do a network scanning.
-
@kuzulis it is a little tough to understand and the flow of the code is also tough to understand, Thats why looking for an alternate way
-
@kuzulis i am not having clarity on how to use its library file with my application
-
@ManiRon Pass an URL to connectToHost instead of IP
-
@jsulm said in Can we do IP scanning using QT:
connectToHost
I passed an URL but the client is not connecting to the server,
client side :
QTcpSocket *tcpSocket; tcpSocket->connectToHost("www.test.com", 6547);
server side :
QTcpServer *tcpServer; tcpServer->listen(QHostAddress::Any, 6547)
-
@ManiRon Alright, this may be a silly solution offer, sorry for that, but you can start a process that prints your public IP address to a file, and laterly, you can assign the file as a string?
QProcess process; process.start("curl ifconfig.me > ipaddress"); //Saves the public IP address as the file "ipaddress" //You may delete the file with another process if you want. QString fname="ipaddress"; QFile file(fname); QString ip; if (file.open(QIODevice::ReadOnly | QIODevice::Text)){ QTextStream stream(&file); while (!stream.atEnd()){ ip = stream.readLine(); } } file.close();
So, on a Linux based system, the string variable "ip" must be your public IP address.
-
-
@closx He needs the IP of his server which not necessarily runs on same machine...
-
@jsulm said in Can we do IP scanning using QT:
@closx He needs the IP of his server which not necessarily runs on same machine...
Then we can replace the code with
QProcess process; process.start("dig +short test.com > ipaddress"); QString fname="ipaddress"; QFile file(fname); QString ip; if (file.open(QIODevice::ReadOnly | QIODevice::Text)){ QTextStream stream(&file); while (!stream.atEnd()){ ip = stream.readLine(); } } file.close();
Didn't I still get the main problem? Am I retarded? lmao
-
@closx That is actually not needed - you can simply connect to host name instead of IP.
-
This post is deleted! -
@jsulm how to set the host name of server ? can you provide me an example ?
-
@ManiRon Read the manual of your server or OS.
For Ubuntu Linux for example see https://www.cyberciti.biz/faq/ubuntu-change-hostname-command/