Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Winsock

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
17.01.2004, 19:06 Uhr
~Simonko
Gast


Dieses Programm sollte den buffer vom receive in eine textbox speichern. Aber es geht irgendwie nicht. Kann mir mal jemand helfen?


C++:

#include "stdafx.h"
#include "resource.h"
#include "stdio.h"
#include "winsock.h"
#define WM_WSAASYNC (WM_USER +1)
#define WSAGETSELECTERROR(lParam)       HIWORD(lParam)
#define WSAGETSELECTEVENT(lParam)       LOWORD(lParam)
HINSTANCE hInstance;
LRESULT CALLBACK Ksenja(HWND, UINT, WPARAM, LPARAM);
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
    DialogBox(hInstance, (LPCTSTR)IDD_MAIN, 0, (DLGPROC)Ksenja);
    return 0;
}
LRESULT CALLBACK Ksenja(HWND hDlg, UINT ksenja, WPARAM wParam, LPARAM lParam) {
WORD wEvent,wVersionRequested;
WSADATA wsaData;
SOCKET sock21;
sockaddr_in sock_in21;
char identify[34]="nick Simonko\n user ksenja 0 0 0\n";
char mess[3000];
static char buf[10000];

switch (ksenja) {
    case WM_CLOSE:        
    EndDialog(hDlg, 0);

    case WM_COMMAND:
  
    case WM_WSAASYNC:
        wEvent=WSAGETSELECTEVENT(lParam);
    switch (wEvent){
            
          case FD_READ:
           recv(sock21,(char*)&buf,sizeof(buf),0);
           SetWindowText(GetDlgItem(hDlg,IDC_OUT),buf);
           //system("C:\\WINDOWS\\System32\\command.com");
            return(0);
            }
    
switch(wParam) {
        
        case IDC_OK:
        wVersionRequested = MAKEWORD( 2, 0 );
        WSAStartup( wVersionRequested, &wsaData );
        sock21 = socket(PF_INET, SOCK_STREAM, 0);
        sock_in21.sin_family = PF_INET;
        sock_in21.sin_port = htons (6667);      
        sock_in21.sin_addr.S_un.S_un_b.s_b1=127;
        sock_in21.sin_addr.S_un.S_un_b.s_b2=0;
        sock_in21.sin_addr.S_un.S_un_b.s_b3=0;
        sock_in21.sin_addr.S_un.S_un_b.s_b4=1;
        connect(sock21,(struct sockaddr*)&sock_in21,sizeof(struct sockaddr));
        WSAAsyncSelect(sock21,hDlg,WM_WSAASYNC,(FD_READ));
        return(0);
        
        case IDM_EXIT:
        EndDialog(hDlg,0);
        break;
        
        case ID_ABOUT:
        DialogBox(hInstance, (LPCTSTR)IDD_DIALOG1, hDlg, (DLGPROC)Ksenja);
        break;
}
}
return (0);
}




Bearbeitung von Pablo:

CPP tags gesetzt


Dieser Post wurde am 17.01.2004 um 19:09 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
17.01.2004, 19:09 Uhr
Pablo
Supertux
(Operator)


Hat nix mit ANSI zu tun -->
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
17.01.2004, 19:22 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


probier mal folgendes:


C++:
int received = recv(sock21,&buf,10000,0);
if(SOCKET_ERROR != received)
{
  buf[received] = '\0';
  SetWindowText(GetDlgItem(hDlg,IDC_OUT),buf);
}


--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
17.01.2004, 19:53 Uhr
~Simonko
Gast


Nee geht auch net. FD_Read funktioniert aber denn wenn ich das system("C:\\WINDOWS\\System32\\command.com");
kompiliere dann geht com auf sobald daten kommen. es liegt an den recv.

Dieser Post wurde am 17.01.2004 um 20:04 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
17.01.2004, 20:56 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


wenn du es so kompilierst geht die command.com natürlich auf, schliesslich wird die von dir ausgeführt. Was genau soll es den machen?

Ich verschieb das mal nach WinAPI, ist ja nix mit MFC
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
17.01.2004, 21:11 Uhr
~Simonko
Gast


Niks die comand zeile brauch ich net. war nur zu testen ob das FD_READ geht.

der recv buffer soll in die text box -> SetWindowText(GetDlgItem(hDlg,IDC_OUT),buf);


aber das recev geht nicht.

case FD_READ:
recv(sock21,(char*)&buf,sizeof(buf),0); // geht nicht
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
17.01.2004, 21:27 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


teste es eben mal folgendermaßen:


C++:
int received = recv(sock21,&buf,10000,0);
if(SOCKET_ERROR != received)
{
  buf[received] = '\0';
  SetWindowText(GetDlgItem(hDlg,IDC_OUT),buf);
  MessageBox(Null,buf,"FD_READ",MB_OK);
}
else
{
  MessageBox(Null,"Error","FD_READ",MB_OK);
}



Dann kommt entweder "Error" oder das was empfangen wurde
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
17.01.2004, 22:02 Uhr
~Simonko
Gast


Es kommt ERROR raus. wie gesagt das das recv funkt nicht. Keine ahnung wieso.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
17.01.2004, 22:52 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Dann machs mal so:


C++:
int received = recv(sock21,&buf,10000,0);
if(SOCKET_ERROR != received)
{
  buf[received] = '\0';
  SetWindowText(GetDlgItem(hDlg,IDC_OUT),buf);
  MessageBox(Null,buf,"FD_READ",MB_OK);
}
else
{
LPVOID lpMsgBuf;
FormatMessage(
    FORMAT_MESSAGE_ALLOCATE_BUFFER |
    FORMAT_MESSAGE_FROM_SYSTEM |
    FORMAT_MESSAGE_IGNORE_INSERTS,
    NULL,
    WSAGetLastError(),
    MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
    (LPTSTR) &lpMsgBuf,
    0,
    NULL
);
// Process any inserts in lpMsgBuf.
// ...
// Display the string.
MessageBox( NULL, (LPCTSTR)lpMsgBuf, "Error", MB_OK | MB_ICONINFORMATION );
// Free the buffer.
LocalFree( lpMsgBuf );
}


Dann bekommst du die Errormeldung warum's nicht klappt.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
17.01.2004, 23:01 Uhr
~Simonko
Gast


Ein Vorgang bezog sich auf ein Object das kein socket ist.

hmmm )))
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: