Bonjour, j'utilise une serveur embarque (Lantronix Xport), je souhaite faire communiquer ce serveur avec un PC. Je sais que l'adresse IP du serveur est comprise entre 169.254.0.0 et 169.254.255.255, mais je ne la connais pas. J'ai donc cree une fonction qui balaye cette plage d'adress IP et utilise les socket windows pour trouver le serveur. Le probleme est que ma fonction est trop lente. La fonction connect() de la librairie winsock2.h est le probleme. Je voulais savoir si vous connaisiez une autre methode pour faire ca et si il y avais un probleme dans mon code. Si dessous le code dee la fonction en question.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 char server_connect(void) { char ch[17]; unsigned char i=0; unsigned char j=0; int val; while(i!=255 && j!=255) { sprintf(ch,"169.254.%d.%d",i,j);//create a string for the IP adress j++; //test all the adress between 169.254.0.0 to 169.254.255.255 if(j==255) { j=0; i++; } WSAStartup((MAKEWORD(2,0)), &WSAData); sock = socket(AF_INET, SOCK_STREAM, 0); sin.sin_addr.s_addr = inet_addr(ch); sin.sin_family = AF_INET; sin.sin_port = htons(1100); val=connect(sock, (SOCKADDR *)&sin, sizeof(sin)); if(val!=INVALID_SOCKET)//if the connection is ok check the Xport { serve_write("Test?");//send a value Sleep(10);//wait 10 ms if(server_read()=="OK!")return true; } //if the answer is god the function is true } return false;//if there are no valid IP the function is false }
Partager