Bonjour,
Jai suivi ce tutoriel et copié le code tel qu'il est http://melem.developpez.com/tutoriel...ndows/winsock/
Juste pour pour tester en mode UDP l'envoi d'un message "bonjour" puis affichage du côté serveur.
Programme Client:
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
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <winsock2.h>
 
 
int main()
{
    WSADATA wsaData;
 
    if (WSAStartup(MAKEWORD(2, 0), &wsaData) != 0)
        /* La fonction WSAStartup a echoue */ ;
    else
    {
        /* ... On peut continuer ... */
 
        SOCKET s;
        s = socket(PF_INET,SOCK_DGRAM,IPPROTO_UDP);
        if (s == INVALID_SOCKET)
            /*La fonction socket a échoué*/ printf("problème de socket");
        else
        {
            /*Libérer le socket*/
            SOCKADDR_IN server; //Machine à laquelle se connecter
            server.sin_family = AF_INET;
            server.sin_addr.s_addr  = inet_addr("127.0.0.1");
            server.sin_port = htons(5050);
            memset(&server.sin_zero, '\0', sizeof(server.sin_zero));
 
            /* Connexion reussie ! */
            char buffer[100]= "Bonjour\n";
 
            sendto(s, buffer, (int)strlen(buffer), 0, (SOCKADDR *)&server, sizeof(server));
            printf("Message envoyé");
            shutdown(s, SD_SEND);
 
            closesocket(s);
        }
        /* Mais il faut appeler WSACleanup a la fin */
        WSACleanup();
    }
    return 0;
}
Au niveau client ça marche bien.
Programme Serveur:
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
 
#include <stdio.h>
#include <winsock2.h>
 
int main()
{
    WSADATA wsaData;
 
    if (WSAStartup(MAKEWORD(2, 0), &wsaData) != 0)
        fprintf(stderr, "La fonction WSAStartup a echoue.\n");
    else
    {
        SOCKET s_server;
 
        s_server = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);
        if (s_server == INVALID_SOCKET)
            fprintf(stderr, "La fonction socket a echoue.\n");
        else
        {
            SOCKADDR_IN server;
 
            server.sin_family       = AF_INET;
            server.sin_addr.s_addr  = htonl(INADDR_ANY);
            server.sin_port         = htons(5050);
            memset(&server.sin_zero, '\0', sizeof(server.sin_zero));
 
            if (bind(s_server, (SOCKADDR *)&server, sizeof(server)) == SOCKET_ERROR)
                fprintf(stderr, "La fonction bind a echoue.\n");
            else
                {
                    SOCKADDR_IN client;
                    int csize = sizeof(client);
                    char buffer[100];
                    int n;
 
                    n = recvfrom(s_server, buffer, sizeof(buffer)- 1, 0, (SOCKADDR *)&client, &csize);
 
                    if (n != SOCKET_ERROR)
                    {
                        printf("tst");
                        buffer[n] = '\0';
                        printf("Un message de %s: %s",inet_ntoa(client.sin_addr), buffer);
                        printf("recu");
                    }
                    else printf("error_socket");
 
                }
                closesocket(s_server);
            }
 
        WSACleanup();
    }
 
    return 0;
}
Au niveau serveur, j'ai fait des test de printf le programme marche jusqu'à la fonction recvfrom() qui continue à tourner sans rien renvoyer.
J'ai désactivé l'antivirus, les firewall, j'ai testé avec d'autres numéros de ports.. , rien.
J'ai essayé de me tourner vers php en réadaptant le code, et apparemment c'est le même problème à la réception.
So help plz ! Merci d'avance.