gilou Modérateur Modosaurus Rex | Si ceci fonctionne:
Code :
- #include <stdio.h>
- #include <winsock2.h>
- #include <windows.h>
- #pragma comment(lib, "ws2_32.lib" )
- void main(void)
- {
- SOCKET c,c1;
- SOCKADDR_IN to, to1;
- WSADATA wsa;
- WORD v;
- int i;
- char buf[] = "test test";
- //Windows socket init//
- v = MAKEWORD(2, 0);
- if(WSAStartup(v, &wsa) != 0)
- exit(EXIT_FAILURE);
- ///////////////////////
- //Socket//
- c = socket(AF_INET, SOCK_DGRAM, 0);
- c1 = socket(AF_INET, SOCK_DGRAM, 0);
- to.sin_family = AF_INET;
- to1.sin_family = AF_INET;
- to.sin_addr.s_addr = inet_addr("192.168.0.1" );
- to1.sin_addr.s_addr = inet_addr("192.168.0.2" );
- to.sin_port = htons(1989);
- to1.sin_port = htons(1989);
- sendto(c, buf, sizeof(buf), 0, (LPSOCKADDR)&to, sizeof(to));
- sendto(c1, buf, sizeof(buf), 0, (LPSOCKADDR)&to1, sizeof(to1));
- closesocket(c);
- closesocket(c1);
- WSACleanup();
- return;
- }
|
Alors, ca peut en effet etre du a un réemploi de la socket ou de la structure SOCK_ADDR, avant qu'elle ait fini d'envoyer ce qu'elle a a envoyer (auquel cas, ce devrait etre ta 2e machine seulement qui devrait recevoir correctement le message). Essayes alors de tenir compte d'un parametre SO_LINGER dans les options de la socket.
De toute façon, les codes d'erreurs de sendto dans ton source initial devraient permettre de savoir ou est le pb, une fois décriptés avec WSAGetLastError. A+, Message édité par gilou le 19-04-2003 à 10:33:38 ---------------
There's more than what can be linked! -- Le capitaine qui ne veut pas obéir à la carte finira par obéir aux récifs. -- No jab ? No job ! -- (╯°□°)╯︵ ┻━┻
|