WSAAsyncselect

Тема в разделе "WASM.WIN32", создана пользователем 6opoDuJIo, 14 июл 2009.

  1. 6opoDuJIo

    6opoDuJIo New Member

    Публикаций:
    0
    Регистрация:
    22 май 2009
    Сообщения:
    105
    можно ли зарегистрировать функцией WSAAsyncselect два сообщения от разных сокетов но для одного окна?
     
  2. iZzz32

    iZzz32 Sergey Sfeli

    Публикаций:
    0
    Регистрация:
    3 сен 2006
    Сообщения:
    355
    А почему нет? Можно. В wParam ведь придёт хэндл сокета.
     
  3. 6opoDuJIo

    6opoDuJIo New Member

    Публикаций:
    0
    Регистрация:
    22 май 2009
    Сообщения:
    105
    о
    точняк
    спс.я об этой фишке не знал но догадывалса
     
  4. 6opoDuJIo

    6opoDuJIo New Member

    Публикаций:
    0
    Регистрация:
    22 май 2009
    Сообщения:
    105
    чувак, ты облегчил мне жизнь на 300кб кода)
     
  5. 6opoDuJIo

    6opoDuJIo New Member

    Публикаций:
    0
    Регистрация:
    22 май 2009
    Сообщения:
    105
    хм
    чот неполучается
    вот регистрирую сообщения с помощью WSAAsyncSelect:
    Код (Text):
    1. invoke WSAAsyncSelect,hSocket2,hWin,COMMANDSOCK,FD_READ+FD_ACCEPT
    2. invoke WSAAsyncSelect, CommandConnection.hSocket, hWin,COMMANDSOCK, FD_CONNECT+FD_CLOSE+FD_READ
    Вот , собственно, обработка сообщений от сокетов:
    Код (Text):
    1. Case COMMANDSOCK
    2. Switch wParam
    3. Case hClient
    4. Switch lParam
    5. Case FD_READ
    6.  
    7.            
    8.             invoke SetEvent,CommandConnection.CommandReceived
    9.             invoke recv, hClient, addr ComBuff, 64, 0
    10.             invoke MessageBox,NULL,hIP,offset Com_User,MB_OK
    11.            
    12.            
    13. invoke MessageBox, NULL, addr ComBuff, addr hClient, MB_OK
    14. mov eax,buffer22
    15. mov ComBuff,eax
    16. Endsw
    17. Case hSocket2
    18. Switch lParam
    19. Case FD_ACCEPT
    20. invoke MessageBox,NULL,NULL,hIP,MB_OK
    21. invoke  accept, hSocket2, 0, 0
    22. mov  hClient, eax ;
    23. invoke WSAAsyncSelect,hClient,hWin,COMMANDSOCK,FD_READ+FD_ACCEPT
    24. Case FD_CLOSE
    25.  
    26.       invoke closesocket, hClient
    27.        mov hClient, 0
    28.  
    29. Case FD_READ
    30.  
    31.            
    32.             invoke SetEvent,CommandConnection.CommandReceived
    33.             invoke recv, hClient, addr ComBuff, 64, 0
    34.             invoke MessageBox,NULL,hIP,offset Com_User,MB_OK
    35.            
    36.            
    37. invoke MessageBox, NULL, addr ComBuff, addr hClient, MB_OK
    38. mov eax,buffer22
    39. mov ComBuff,eax
    40.  
    41. Endsw
    42. Case hSocket
    43. Switch lParam
    44. Case FD_CONNECT
    45. invoke MessageBox,NULL,NULL,hIP,MB_OK
    46. invoke  accept, hSocket2, 0, 0
    47. mov  hClient, eax ;
    48.  
    49.  
    50.  
    51. Case FD_CLOSE
    52.  
    53.        invoke closesocket, hClient
    54.        mov hClient, 0
    55.        invoke closesocket, CommandConnection.hSocket
    56.        mov CommandConnection.hSocket, 0
    57.    
    58. Case FD_READ
    59. HIWORD lParam
    60.  
    61.             invoke SetEvent,CommandConnection.CommandReceived
    62.             invoke recv, CommandConnection.hSocket, addr ComBuff, 64, 0
    63.            
    64.            
    65. invoke MessageBox, NULL, addr ComBuff, addr ListViewClass, MB_OK
    66. mov eax,buffer22
    67. mov ComBuff,eax
    68. Case FD_CONNECT        
    69.            
    70.                
    71.     invoke MessageBox, NULL, addr Connect_Success, addr Ftp1, MB_OK; установлено соединение   
    72.  
    73.     invoke send, CommandConnection.hSocket, addr Com_User, eax, 0
    74.  
    75.            
    76.            
    77.             ;конец обработки сообщений от сокетов
    78.  
    79.  Endsw
    80.  Endsw