Probleme bizzare....

lektrosonic Messages postés 145 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 21 février 2013 - 23 janv. 2007 à 19:11
lektrosonic Messages postés 145 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 21 février 2013 - 25 janv. 2007 à 01:18
Bonsoir, j ai code ce client...

Code C:
#include <windows.h>
#include <winsock2.h>
#include <shlwapi.h>

#define ID_CONNECT 1
#define ID_SEND 2

#define WM_SOCKET (WM_APP + 100)

LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);

/*  Make the class name into a global variable  */
char szClassName[ ] = "WindowsApp";

HWND hwnd_connect;
HWND hwnd_send;

HINSTANCE HInstance;

WSADATA WSAData;

SOCKET sock;
SOCKADDR_IN ws_sin;

char buffer[1024]="";

int WINAPI WinMain (HINSTANCE hThisInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpszArgument,
                    int nFunsterStil)

{
    HWND hwnd;               /* This is the handle for our window */
    MSG messages;            /* Here messages to the application are saved */
    WNDCLASSEX wincl;        /* Data structure for the windowclass */
    HInstance=hThisInstance;
    /* The Window structure */
    wincl.hInstance = hThisInstance;
    wincl.lpszClassName = szClassName;
    wincl.lpfnWndProc = WindowProcedure;      /* This function is called by windows */
    wincl.style = CS_DBLCLKS;                 /* Catch double-clicks */
    wincl.cbSize = sizeof (WNDCLASSEX);

    /* Use default icon and mouse-pointer */
    wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
    wincl.lpszMenuName = NULL;                 /* No menu */
    wincl.cbClsExtra = 0;                      /* No extra bytes after the window class */
    wincl.cbWndExtra = 0;                      /* structure or the window instance */
    /* Use Windows's default color as the background of the window */
    wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;

    /* Register the window class, and if it fails quit the program */
    if (!RegisterClassEx (&wincl))
        return 0;

    /* The class is registered, let's create the program*/
    hwnd = CreateWindowEx (
           WS_EX_CLIENTEDGE,                   /* Extended possibilites for variation */
           szClassName,         /* Classname */
           "CLIENT",       /* Title Text */
           WS_SYSMENU, /* default window */
           CW_USEDEFAULT,       /* Windows decides the position */
           CW_USEDEFAULT,       /* where the window ends up on the screen */
           280,                 /* The programs width */
           200,                 /* and height in pixels */
           HWND_DESKTOP,        /* The window is a child-window to desktop */
           NULL,                /* No menu */
           hThisInstance,       /* Program Instance handler */
           NULL                 /* No Window Creation data */
           );

    /* Make the window visible on the screen */
    ShowWindow (hwnd, nFunsterStil);

    /* Run the message loop. It will run until GetMessage() returns 0 */
    while (GetMessage (&messages, NULL, 0, 0))
    {
        /* Translate virtual-key messages into character messages */
        TranslateMessage(&messages);
        /* Send message to WindowProcedure */
        DispatchMessage(&messages);
    }

    /* The program return-value is 0 - The value that PostQuitMessage() gave */
    return messages.wParam;
}

/*  This function is called by the Windows function DispatchMessage()  */

LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)                  /* handle the messages */
    {
        case WM_SOCKET:
             {
                     switch(LOWORD(lParam))
                     {
                                           case FD_READ:
                                                {
                                                        
                                                         recv(sock, buffer, sizeof(buffer), 0);
                                                         SetWindowText(hwnd,buffer);
                                                }                                             
                                                break;
                                           case FD_CONNECT:
                                                {
                                                         SetWindowText(hwnd,"Connected");
                                                             
                                                }
                                                break;
                                           case FD_CLOSE:
                                                {
                                                         SetWindowText(hwnd,"Disconnected");
                                                }
                                                break;
                                          
                     }          
             }
             break;
        case WM_COMMAND:
                        switch(LOWORD(wParam))
                        {
                                              case ID_CONNECT:
                                              {
                                                        connect(sock, (SOCKADDR *)&ws_sin, sizeof(ws_sin));
                                              }
                                              break;
                                              case ID_SEND:
                                              {
                                                      
                                                       send(sock,"test",sizeof(char)*(strlen("test")),0);
                                              }
                                              break;
                        }
                        break;
        case WM_CREATE:
             {
                   hwnd_connect=CreateWindowEx(WS_EX_CLIENTEDGE,"BUTTON","Connect",WS_CHILD|WS_VISIBLE,5,10,90,25,hwnd,(HMENU)ID_CONNECT,HInstance,NULL);      
                   hwnd_send=CreateWindowEx(WS_EX_CLIENTEDGE,"BUTTON","Send",WS_CHILD|WS_VISIBLE,5,40,90,25,hwnd,(HMENU)ID_SEND,HInstance,NULL);      
                  
                   WSAStartup(MAKEWORD(2,0), &WSAData);
                   ws_sin.sin_addr.s_addr=inet_addr("127.0.0.1");
                   ws_sin.sin_family=AF_INET;
                   ws_sin.sin_port=htons(7878);
                   sock = socket(AF_INET,SOCK_STREAM,0);
                   bind(sock,(SOCKADDR *)&ws_sin,sizeof(ws_sin));
                   WSAAsyncSelect(sock,hwnd,WM_SOCKET,FD_WRITE|FD_READ|FD_CONNECT|FD_CLOSE);
                  
             }
             break;
        case WM_DESTROY:
            WSACleanup();
            PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
            break;
        default:                      /* for messages that we don't deal with */
            return DefWindowProc (hwnd, message, wParam, lParam);
    }

    return 0;
}

Ce qui est vraiment bizzare , et qui me rend fou, c est que quand je lance uniquement ce client (sans aucun serveur), je click sur Connect, la connection est etablie..et puis si je click sur Send, ma fenetre a pour title "test" !
On dirrai que le client est connecte a lui meme !! Je comprend plu rien la

l3KTr0 Was HeRe

7 réponses

yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
23 janv. 2007 à 20:09
Salut !

Mais pourquoi tu fais un bind ?
Tu sais à quoi ça sert ?

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
0
lektrosonic Messages postés 145 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 21 février 2013
24 janv. 2007 à 19:00
non, explique moi..je croyai que c etai pour determiner l adresse et le port ou le socket va se connecter

l3KTr0 Was HeRe
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
24 janv. 2007 à 20:29
LOL ! Autant pour moi, j'ai confondu avec listen qui sert à écouter !
Oh ! Tiens un parachute ! Qu'est-ce qu'il fait là ? lol
Plus sérieusement, là du coup je vois pas de souci à première vue. Je teste ton programme pour voir et je te tiens au courant.

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
24 janv. 2007 à 20:36
Après un test vite fait et répété plusieurs fois, le client se connecte chez moi aussi mais il ne reçoit rien du tout quand je clique sur SEND.
Donc là je ne vois pas d'où peut venir le problème.

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lektrosonic Messages postés 145 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 21 février 2013
24 janv. 2007 à 22:32
lol pour le parachute..c est vraiment bizzare nan ?

l3KTr0 Was HeRe
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
24 janv. 2007 à 23:42
Oui assez !
Moi ya qq chose qui m'échappe.
Mais si ça se trouve c'est tout bête et j'ai pas vu .

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
0
lektrosonic Messages postés 145 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 21 février 2013
25 janv. 2007 à 01:18
si tu trouve tien moi au courant...les autres vous ne voyez pas ce qui cause sa ?

l3KTr0 Was HeRe
0
Rejoignez-nous