I’m working on a Qt/C++ project, and one of its functions is setting up a MySQL database. That particular bit of code works fine, but one of the things that the user must provide to make it work is the port that the MySQL process is currently listening on. This is usually 3306 or 5432, (depending on OS… MySQL usually wants to use 3306 first but I’ve had it try to use the Postgres port on one occasion) but I feel like I need to account for strange configurations. Many users will have no idea what to put in that field unless they know enough about MySQL to know what ports it uses. (most people don’t) My target audience for the program is everyone who might want to keep a computerized diary, so it would be nice if the program can find the correct port on its own.
I could have the program run through a list of commonly-used ports until it finds the right one, (which should work in most setups) but it would be better if it could actually figure out which port to use. That way, there won’t be any problems if the user has a bizarre configuration for some reason.
Any idea how I would go about doing this? I’ve tried googling and I found nothing relevant.
I can see of two methods to go about doing this. One: a simple port scanner. Like you said scanning all normally used ports, if nothing is found you can scan all the ports, it shouldn’t be that hard to implement, you scan the ports and ask for a response only MYSQL will give to a particular method, this way you know that it is indeed MySQL on that port.
Secondly, you could attempt to figure out what the port is through the registry. Assuming this is a windows OS you could find that in the registry (hopefully), if it were linux OS you’d find it in MySQL’s settings files, ect…
But I see no “UNIVERSAL CONSTANT” for this, I think it would be easiest to implement a simple port scanner.
The registry probably won’t be needed actually, Searching my MySQL directory on Windows 7 I found a “my.ini” searched for port and its right there “port=theport”
Thus you can probably search for the mySQL directory and the .ini file to find the port.