krystian11102 Temat założony przez niniejszego użytkownika |
[C++, WinSock] Protokół GG i "Pusta" Odpowiedź » 2013-01-29 19:48:02 Witam. Chciałbym napisać prosty klient GG, tylko gdy łącze się z Serwerem to otrzymuje "Pustą" Odpowiedź. Korzystam stąd: http://toxygen.net/libgadu/protocol/ A oto mój kod: #include <windows.h> #include <winsock.h> #include <string> #define POLACZ 100 using namespace std; LPSTR NazwaKlasy = "Klasa Okienka"; MSG Komunikat; WSADATA wsaData; SOCKADDR_IN saddr; SOCKET sock; char * http_req = "GET /appsvc/appmsg_ver8.asp?fmnumber=222222&lastmsg=0&version=1.0.0.0 HTTP/1.1\n\nConnection: Keep-Alive\n\nHost: appmsg.gadu-gadu.pl\n\n"; char index[ 1000 ];
HWND edit;
u_long resolveHost( const string & host ) { LPHOSTENT hostEntry = gethostbyname( host.c_str() ); if( !hostEntry ) { unsigned int addr = inet_addr( host.c_str() ); hostEntry = gethostbyaddr(( char * ) & addr, 4, AF_INET ); if( !hostEntry ) { return 0; } } return *(( int * ) * hostEntry->h_addr_list ); }
LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam );
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { WNDCLASSEX wc; wc.cbSize = sizeof( WNDCLASSEX ); wc.style = 0; wc.lpfnWndProc = WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = LoadIcon( NULL, IDI_APPLICATION ); wc.hCursor = LoadCursor( NULL, IDC_ARROW ); wc.hbrBackground =( HBRUSH )( COLOR_WINDOW + 1 ); wc.lpszMenuName = NULL; wc.lpszClassName = NazwaKlasy; wc.hIconSm = LoadIcon( NULL, IDI_APPLICATION ); if( !RegisterClassEx( & wc ) ) { MessageBox( NULL, "Wysoka Komisja odmawia rejestracji tego okna!", "Niestety...", MB_ICONEXCLAMATION | MB_OK ); return 1; } HWND hwnd; hwnd = CreateWindowEx( WS_EX_CLIENTEDGE, NazwaKlasy, "blabla", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 240, 400, NULL, NULL, hInstance, NULL ); edit = CreateWindowEx( WS_EX_CLIENTEDGE, "EDIT", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER | ES_MULTILINE | WS_VSCROLL | ES_AUTOVSCROLL, 10, 10, 200, 200, hwnd, NULL, hInstance, NULL ); CreateWindowEx( NULL, "BUTTON", "Połącz", WS_CHILD | WS_VISIBLE, 10, 250, 150, 30, hwnd,( HMENU ) POLACZ, hInstance, NULL ); if( hwnd == NULL ) { MessageBox( NULL, "Okno odmówiło przyjścia na świat!", "Ale kicha...", MB_ICONEXCLAMATION ); return 1; } ShowWindow( hwnd, nCmdShow ); UpdateWindow( hwnd ); while( GetMessage( & Komunikat, NULL, 0, 0 ) ) { TranslateMessage( & Komunikat ); DispatchMessage( & Komunikat ); } return Komunikat.wParam; }
LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ) { switch( msg ) { case WM_CLOSE: DestroyWindow( hwnd ); break; case WM_COMMAND: switch( wParam ) { case POLACZ: WSADATA WSAData; WSAStartup( MAKEWORD( 2, 0 ), & WSAData ); char buffer[ 1000 ]; sock = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP ); memset(( void * ) & saddr, 0, sizeof( saddr ) ); saddr.sin_addr.s_addr = inet_addr( "91.214.237.11" ); saddr.sin_family = AF_INET; saddr.sin_port = htons( 8074 ); if( connect( sock,( sockaddr * ) & saddr, sizeof( sockaddr ) ) == SOCKET_ERROR ) { MessageBox( NULL, "Error", "bad", MB_OK ); sock = NULL; return - 1; } send( sock, http_req, strlen( http_req ), 0 ); char * buforxd; recv( sock, index, 1000, 0 ); MessageBox( NULL, index, "blablabla", MB_OK ); SetWindowText( edit, index ); closesocket( sock ); WSACleanup(); break; } break; case WM_DESTROY: PostQuitMessage( 0 ); break; default: return DefWindowProc( hwnd, msg, wParam, lParam ); } return 0; }
Co zrobić, aby poprawnie się połączyć ? |