J'expérimente des winsockets C++. Je veux créer une méthode avec laquelle je peux trouver le serveur sur le réseau, sans savoir que c'est IP. Pour ce faire, je boucle simplement ma méthode connect via les adresses IP 192.168.1.0 à 192.168.1.255. Cependant, le temps entre chaque connexion est assez important, le programme a tendance à attendre le message: connect (nBytes, (sockaddr *) & server, sizeof (server)) pendant au moins 30 secondes si ce n'est plus. Mes questions sont les suivantes: Pourquoi cela se passe-t-il, comment puis-je résoudre cela et pourrait-il y avoir une façon entièrement différente et meilleure de trouver le serveur?Comment faire un scan réseau-ip en C++?
ma méthode de connexion:
SOCKET connect(char *ipAdress)
{
WSAData wsaData;
if ((WSAStartup(MAKEWORD(2, 2), &wsaData)) == SOCKET_ERROR)
return errorReport("Could not create startup struct");
nBytes = socket(AF_INET, SOCK_STREAM, 0);
if (nBytes == SOCKET_ERROR)
return errorReport("Socket could not be created");
struct hostent *host_entry;
if ((host_entry = gethostbyname(ipAdress)) == NULL)
return errorReport("Cannot find server.");
struct sockaddr_in server;
server.sin_family = AF_INET;
server.sin_port = htons(1337);
server.sin_addr.s_addr = *(unsigned long*) host_entry->h_addr;
if (connect(nBytes, (sockaddr*)&server, sizeof(server)) == SOCKET_ERROR)
{
WSACleanup();
return errorReport("Failed to connect to server.");
}
if (nBytes == -1)
{
WSACleanup();
disconnect(nBytes);
return errorReport("Could not connect");
}
return 0;
}
Aussi, ne hésitez pas à me dire tout ce que je fais mal dans la méthode de connexion actuelle.
Bien sûr, j'aimerais y jeter un coup d'œil! Merci! – user23163
Je l'ai téléchargé, je vais y jeter un coup d'oeil, merci encore! – user23163