begin process at 2012 05 30 12:27:11
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

Réseau & Internet

 > 

winsock et WSAAsyncSelect


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

winsock et WSAAsyncSelect

dimanche 14 janvier 2007 à 00:23:37 | winsock et WSAAsyncSelect

lektrosonic

bonjour, j'ai code deux petites applications (client et serveur) et aux deux g applique la WSAAsyncSelect pour FD_READ, FD_CLOSE , FD_CONNECT (pour le client) et FD_ACCEPT (pour le serveur).
le serveur envoi la donnee "test". la fonction send renvoi bien la taille de "test", par contre che le client , le message FD_READ n est jamais genere..ceci est mon probleme.

voici els bout de codes correspondants:
client:
#define WM_SOCKET (WM_APP + 100)

WSADATA WSAData;

SOCKET sock;
SOCKADDR_IN sin;

char buffer[1024]="";

..ensuite..

case WM_SOCKET:
             {
                     switch(LOWORD(lParam))
                     {
                                           case FD_READ:
                                                {
                                                         int i=0;
                                                         i=recv(wParam, buffer, sizeof(buffer), 0);
                                                         //SetWindowText(hwnd,buffer);
                                                         if(i==0)
                                                         {
                                                                 MessageBox(hwnd,"ok","",MB_YESNO);
                                                         }
                                                }                                             
                                                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 *)&sin, sizeof(sin));
                                              }
                        }
                        break;
        case WM_CREATE:
             {
                   hwnd_connect=CreateWindowEx(WS_EX_CLIENTEDGE,"BUTTON","Connect",WS_CHILD|WS_VISIBLE,25,50,150,35,hwnd,(HMENU)ID_CONNECT,HInstance,NULL);      
                   WSAStartup(MAKEWORD(2,0), &WSAData);
                   sin.sin_addr.s_addr=inet_addr("127.0.0.1");
                   sin.sin_family=AF_INET;
                   sin.sin_port=htons(4148);
                   sock = socket(AF_INET,SOCK_STREAM,0);
                   bind(sock,(SOCKADDR *)&sin,sizeof(sin));
                   WSAAsyncSelect(sock,hwnd,WM_SOCKET,FD_READ|FD_CONNECT|FD_CLOSE);
             }
             break;


puis cote serveur:
#define WM_SOCKET (WM_APP + 100)

WSADATA WSAData;

SOCKET sock;

SOCKADDR_IN csin;

HRESULT sAccept;

...ensuite...

case WM_SOCKET:
                 {
                         switch(LOWORD(lParam))
                         {
                                               case FD_READ:
                                                    {
                                                            
                                                    }                                             
                                                    break;
                                               case FD_ACCEPT:
                                                    {
                                                            
                                                             sAccept=accept(wParam,NULL,NULL);
                                                             SetWindowText(hwnd,"Connected");
                                                    }
                                                    break;
                                               case FD_CLOSE:
                                                    {
                                                             SetWindowText(hwnd,"Disconnected");
                                                    }
                                                    break;
                         }          
                 }
                 break;
        case WM_COMMAND:
                        switch(LOWORD(wParam))
                        {
                                              case ID_LISTEN:
                                              {
                                                       listen(sock, 0);
                                              }
                                              break;
                                              case ID_SEND:
                                              {
                                                       int i=0;
                                                       i=send(sock, "test", sizeof(char)*5, 0);
                                                       if(i!=0)
                                                       {
                                                            MessageBox(hwnd,"ok","",MB_YESNO);  
                                                       }
                                              }
                                              break;
                        }
        case WM_CREATE:
             {
                   hwnd_listen=CreateWindowEx(WS_EX_CLIENTEDGE,"BUTTON","Listen",WS_CHILD|WS_VISIBLE,25,50,150,35,hwnd,(HMENU)ID_LISTEN,HInstance,NULL);
                   hwnd_send=CreateWindowEx(WS_EX_CLIENTEDGE,"BUTTON","Send",WS_CHILD|WS_VISIBLE,25,90,150,35,hwnd,(HMENU)ID_SEND,HInstance,NULL);
                   WSAStartup(MAKEWORD(2,0), &WSAData);
                   csin.sin_addr.s_addr = htonl(INADDR_ANY);
                   csin.sin_family=AF_INET;
                   csin.sin_port=htons(4148);
                   sock = socket(AF_INET,SOCK_STREAM,0);
                   bind(sock,(SOCKADDR *)&csin,sizeof(csin));
                   WSAAsyncSelect(sock,hwnd,WM_SOCKET,FD_ACCEPT|FD_READ|FD_CLOSE);   
             }
             break;

l3KTr0 Was HeRe


Cette discussion est classée dans : case, hwnd, sin, sock, fd


Répondre à ce message

Sujets en rapport avec ce message

prob wsaasyncselect (encore) [ par flatou ] je suis tjr ds la prog d'un client/serveur, et pour le serveur j'ai comme un prob que je n'arrive pas a resoudre.Au lancement de mon serveur, j'ai cet Socket C et api [ par shadow1779 ] Bonjour,j'ai un petit prob avec un bot que j'essai de faire avec l'api et les sockets en C, pour l'instant on ne peux que cliquer sur le bouton connec Scanner un réseau local : durée du RTT [ par YURIX ] Je suis en train de programmer en C++ un scanner pour mon réseau local.J'ai donc créer un socket de cette manière :WSADATA WSAData;WSAStartup(MAKEWORD pb affichage ComboBox dans Dialog [ par Guillemouze ] Salut tout le monde,j'ai un souci d'affichage de mon combo dans un dialog. Quand je click sur la fleche pour afficher la liste, il ne m'affiche rien!P probleme de serveur multi-client [ par Mick7 ] je m'explique je suis arrivé a creer un serveur qui peut accepter 2 client mais le probleme est que si j'essaye de creer les 2 sockets sur le meme por buggage [ par logant83 ] Bonjour, voila enfaite je suis sous devc++ et je code un service irc et je sais pas ce qui se passe, de temp en temp window m'envoy une erreur comme k socket tcp [ par sendouda ] salut tout le monde;j'essaie d'envoyer des paquets TCP avec sock raw il n' ya pas d'erreurs mais je ne les capte pas avec le sniffer Ethereal.Ce même PROBLEME DE CHARGEMENT JPEG DANS UN ECRAN DE VEILLE [ par Batman60 ] bonjourclic droit sur l'exe et puis "tester" le prog fonctionne à merveille mais une fois installé à l'execution de l'ecran de veille les textures jpe Probléme pour lire le buffer au lancement de la connexion [ par logant83 ] Bonsoir, voila enfaite j'ai établi une connexion sur un server irc grace au socket mais quand je recois sur le buffer les différente informations (Ell Probleme de connection sur un site avec des sockets [ par Mick7 ] Salut, voila j'ai un probleme, j'ai un code qui est censé se connecter a google pour que je puisse lui envoyer des requetes. mais mon code marche au n


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,109 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales