Salut !

Je poste aujourd'hui suite à un problème avec la réponse d'une requête UDP.

J'envoi une requête UDP vers un serveur avec un port spécifique, et je reçoit bien la réponse attendu sur wireshark.
En revanche dans mon code, en utilisant recvfrom, je reçoit ce que je vient d'envoyé, je ne trouve pas d'ou peut venir cette erreur, je vous envois la partie du code concerné :

(Ligne 54)

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
char* udp_recv;
	udp_recv = (char*)malloc(256);
	s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
	for (i; i < 1; i++)
	{
 
		String^ delimStr = ":";
		array<Char>^ delimiter = delimStr->ToCharArray();
 
		array<String^>^ addrPort = addr[i]->Split(delimiter);
 
		char *cAddr, *cPort, *cPartAddr;
 
		cAddr = (char*)malloc(16);
		cPort = (char*)malloc(16);
		cPartAddr = (char*)malloc(16);
 
		ConvertStringToChar(addrPort[0], cAddr, 16);
		ConvertStringToChar(addrPort[1], cPort, 16);
 
		SOCKADDR_IN udpbind;
 
		udpbind.sin_family = AF_INET;
		udpbind.sin_addr.s_addr = INADDR_ANY; 
		udpbind.sin_port = htons((u_short)atoi(cPort)); 
 
		if (bind(s, (struct sockaddr*)&udpbind, sizeof(udpbind)) < 0) std::cout << "Erreur" << std::endl;
 
		delimStr = ".";
		delimiter = delimStr->ToCharArray();
 
		array<String^>^ partAddr = addrPort[0]->Split(delimiter);
 
		std::string send("SAMP");
 
		int j = 0;
		for (j; j < 4; j++)
		{
			ConvertStringToChar(partAddr[j], cPartAddr, 16);
			send += (char)atoi(cPartAddr);
		}
		send += (char)(atoi(cPort) & 0xFF);
		send += (char)(atoi(cPort) >> 8 & 0xFF);
		send += "i";
 
		server.sin_addr.s_addr = inet_addr(cAddr);
		server.sin_family = AF_INET;
		server.sin_port = htons((u_short)atoi(cPort));
 
		sendto(s, (char*)send.c_str(), strlen((char*)send.c_str()), 0, (struct sockaddr *)&server, sizeof(server));
 
		struct sockaddr_in recv;
		int client_len = sizeof(recv);
		recv_size = recvfrom(s, udp_recv, 256, 0, (struct sockaddr *)&recv, &client_len);
 
		udp_recv[recv_size] = '\0';
 
		std::cout << udp_recv << std::endl;
 
		free(cPartAddr);
		free(cAddr);
		free(cPort);
 
	}
	closesocket(s);
Merci d'avance