kostenloser Webspace werbefrei: lima-city


Formular mittels POST senden

lima-cityForumProgrammiersprachenC/C++ und D

  1. Autor dieses Themas

    javadomi

    javadomi hat kostenlosen Webspace.

    Wie kann ich mit "egal welche Programmiersprache" ein Formular mittels POST senden? Also ich habe jetzt auf der Seite: http://irgendwas/index.php ein Formular namens "Login" und dort befinden sich zwei Eingabefelder. Das erste ist "Name" und das zweite ist "Pass". Ich m?chte jetzt in Name "javadomi" und in Pass "passwort1" eintragen und es dann durch Submit nochmal auf diese Seite senden: http://irgendwas/index.php
    Wie mache ich das? Die Programmiersprache ist egal. Ich bedanke mich f?r eure Antworten im Vorraus.

    MfG Dominik

    PS: Also ich brauche jetzt ein einfaches Programm, dass ein POST Formular simulieren kann, also wie ich es beschrieben habe mit den Header. Und eventuell dazu noch die HTML Ausgaben in eine Variable speichert.
    Das w?re dann alles.

    PS2: Oder k?nnte mir mal jemand ein Programm senden, dass einfach nur die HTML Ausgaben in eine Veriable speichert? Den Rest kann ich dann selber machen.

    PS3: Kann es mal jemand doch ins C++ Board verschieben?

    Beitrag ge?ndert am 18.09.2005 11:18 von javadomi
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Autor dieses Themas

    javadomi

    javadomi hat kostenlosen Webspace.

    Nein, ihr habt mich falsch verstanden. Ich m?chte, dass er es automatisch macht, also nicht, dass er jetzt auf Submit klicken muss, sondern das Programm f?r ihn das Passwort und den Benutzernamen eingibt und dann automatisch auf Submit klickt.
  4. Wenn ich dich richtig verstanden habe willst du einen autologin haben?

    Das geht soweit ich wei? nur ?ber cookies, wie aber genau wei? ich jetzt grad auch nicht
  5. Autor dieses Themas

    javadomi

    javadomi hat kostenlosen Webspace.

    Ich m?chte ein Programm schreiben, wo du erstmal dein Benutzernamen und Passwort eingibst und dann alle Informationen des Benutzers angezeigt werden, also die HTML Ausgaben, wenn man sich erfolgreich eingeloggt hat, aber das Passwort muss er nat?rlich selbst eingeben.

    Also so:
    User gibt bei Optionen Passwort und Namen ein. User klickt auf connect. Falls Passwort falsch, sagt Programm "Passwort falsch", oder richtig, dann zeigt das Programm den ganzen Quelltext an.

    MfG Dominik
  6. t*****n

    hehe, h?rt sich an als wolle einer ein Skillbot schreiben f?r ein Browsergame :rolleyes:

    Im Prinzip ist das ganz einfach:

    Besorge dir mal Etheral. Dann siehst du welche Daten ?ber Port 80 gesendet werden. Diese Daten musst du dann halt auf deine Bed?rfnisse ver?ndern (hmm ist bl?d ich mach mal ein Beispiel):

    Das ganze hab ich in Delphi gemacht, funzt nat?rlich mit den entsprechenden Bibliotheken auch in anderen Sprachen.

    Die Erstellst ein Array mit den Parameter die du versenden willst. Ein kleines Model w?rde dann vielleicht so aussehen:

    0: $action=login
    1: $username=herbert
    2: $passwort=knoedel

    Um diese Daten mittels Post zu versenden musst du dem HTTP Request Header den ContentType = "application/x-www-form-urlencoded geben". Wie du das anstellst liegt an der Komponente (da ich mittlerweile wei? das du in C++ sehr fit bist, w?rde ich dir die Indy Kompos ans Herz legen, damit geht alles in Prinzip von alleine).

    Dann musst du nat?rlich noch die Parameter versenden. Daf?r musst du erstmal den Content_Length ?bermitteln. Das ist die Stringl?nge des Contents. Der Content wird zusammengebaut nach obigen Beispiel:
    action=login&username=herbert&passwort=knoedel

    Also w?re Content-Length=46, wenn ich mich nicht verz?hlt habe. Nun machst du hinter deinen Content-Length ein Windowsspezifischen Zeilenumbruch (\r\n w?re das Sympbolisch, oder als Hexadezimalen Wert ein 0D0A). Dann nochmal ein Zeilenumbruch und dann den erzeugten Parameter String dahinter.

    Ich hoffe das war einiger Ma?en deutlich, in Delphi k?nnt ichs dir ganz einfach zeigen ;)

    Gru? Tobi
  7. Autor dieses Themas

    javadomi

    javadomi hat kostenlosen Webspace.

    Sehr gut @ttobsen! Danke, damit kann ich was anfangen. Stimmt. Ich bin in C++ ziemlich gut :cool: Aber mit Winsock habe ich mich noch wenig besch?ftigt. Daher w?re mir ein Beispiel brauchbar. Die Programmiersprache spielt immernoch keine Rolle. Naja, au?er Delphi, weil ich den Compilter nicht habe :slant:

    MfG Dominik

    Edit: Frage gekl?rt! Ich habs alleine hingekriegt :cool: Danke f?r eure Antworten und besonders @ttobsen!

    Beitrag ge?ndert am 16.09.2005 14:01 von javadomi
  8. t*****n

    hmm mit Winsock da arbeiten ist etwas doof. Dann musst du dich n?mlich komplett mit dem http Protokoll besch?ftigen.

    Wenn du fit in Englisch bist hilft dir das vielleicht was:

    ftp://ftp.rfc-editor.org/in-notes/rfc2616.txt

    Die Indy Kompos findest du hier, aber die sind anscheinend nur f?r den Borland Compiler geeignet, naja auf dem Bereich kann ich halt garnichts sagen:

    http://www.indyproject.org/Sockets/Download/index.iwp

    Naja, vielelicht hat das auch nicht mehr gebracht, aber mit jeder kleinen Zusatzinfo kommst sicher ein St?ck weiter. Um zu wissen welche DAten du wie verschicken musst rate ich dir wirklich: Ethereal. Einfach mal mit PHP Daten per Post versenden und das dabei Capturen, dann wird einiges klarer.

    Gru? Tobi

    Edit:

    lol kam wohl zu Sp?t mein Post (hab den Edit gesehen). W?re aber nett wenn du f?r andere User deine funktionsf?hige L?sung posten k?nntest.

    Gru? Tobi

    Beitrag ge?ndert am 16.09.2005 14:06 von ttobsen
  9. Autor dieses Themas

    javadomi

    javadomi hat kostenlosen Webspace.

    Wer sie will, dann muss ich ihn eine Zip Datei senden :cool:
  10. Autor dieses Themas

    javadomi

    javadomi hat kostenlosen Webspace.

    Toll, daraus will ich soein Lima-City Tool machen. Man gibt seinen Benutzernamen ein + Passwort und dann gibt das Tool die heute gesammelten Gulden aus, aber wenn ich mich dann von der Login Seite mittels Post anmelde, dann kriege ich im Header 302 Found, statt 200 OK, also ich kann dann keine HTML Ausgaben sehen, wie Gulden, usw, aber ich wei?, dass ich mich richtig eingeloggt habe. Nun wie kann ich machen, dass ich die HTML Ausgaben sehen kann. Das Lima-City Login ist jetzt nur ein Beispiel.

    MfG Dominik
  11. HTTP-Statuscode 302 m?sste eine Weiterleitung (Redirection) sein. Da musst du den String, den dir PostToHost() zur?ckgibt mal analysieren. Irgendwo steht da eine Adresse, an die weitergeleitet werden soll. Die musst du rausfischen und einen neuen HTTP-Request mit der neuen Adresse generieren. Ein Webbrowser macht das automatisch (es f?llt einem deshalb meist gar nicht auf).

    MfG
    alopex
  12. Autor dieses Themas

    javadomi

    javadomi hat kostenlosen Webspace.

    Ich kann dir genau sagen, wie der Receive Header ist, den ich bekomme:

    HTTP/1.1 302 Found
    Date: Fri, 16 Sep 2005 21:58:50 GMT
    Server: Apache/1.3.26 (Unix) Debian GNU/Linux PHP/4.4.0
    X-Powered-By: PHP/4.4.0
    Set-Cookie: PHPSESSID=ffaa1512ee1774b45f122e7c834d74b0; path=/
    Expires: Mon, 26 Jul 1997 05:00:00 GMT
    Cache-Control: no-store, no-cache, must-revalidate
    Pragma: no-cache
    Last-Modified: Fri, 16 Sep 2005 21:58:50 GMT
    Cache-Control: post-check=0, pre-check=0
    location: usercp.php
    Content-Encoding: gzip
    Vary: Accept-Encoding
    Connection: close
    Content-Type: text/html

    Soll ich jetzt die Datei usercp.php ohne Parameter aufrufen? Da sagt der, dass es ein gesch?tzer Bereich ist, so als ob ich kein Passwort eingegeben h?tte.

    MfG Dominik
  13. Normalerweise musst du jetzt die Adresse aufrufen, die unter "location:" zu finden ist, also "usercp.php". Aber diesen Response sendet Lima nur, wenn du dich falsch einloggst.

    Firefox sendet bei einem Formular-Login ?ber /login.php Folgendes:


    POST /usercp.php HTTP/1.1
    Host: www.lima-city.de
    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.7.7) Gecko/20050414 Firefox/1.0.3
    Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
    Accept-Language: en,de-de;q=0.8,de;q=0.5,en-us;q=0.3
    Accept-Encoding: gzip,deflate
    Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
    Keep-Alive: 300
    Connection: keep-alive
    Referer: http://www.lima-city.de/login.php
    Cookie: PHPSESSID=e780a6c189582c1da649e2c7e75a99f8
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 64
    form_username=test&form_password=test2&securitys=on&action=login

    Statt "test" den Usernamen einsetzen und statt "test2" das Passwort. Und nat?rlich Content-Length anpassen. Dann m?sste es klappen.
  14. Autor dieses Themas

    javadomi

    javadomi hat kostenlosen Webspace.

    Ok, ich habe bei login.php 302 Found erhalten. Ich habe alle Daten so gesendet, wie du es geschrieben hast. Die location dannach ist usercp.php.

    Dannach rufe ich usercp.php per POST mit denselben Daten, wie bei login, und 200 OK, aber keine HTML Ausgaben. Der Header von usercp.php sieht dann so aus:

    HTTP/1.1 200 OK
    Date: Sat, 17 Sep 2005 06:55:54 GMT
    Server: Apache/1.3.26 (Unix) Debian GNU/Linux PHP/4.4.0
    X-Powered-By: PHP/4.4.0
    Set-Cookie: PHPSESSID=afabfb241d93ee217c869ff9eb2bf72c; path=/
    Expires: Mon, 26 Jul 1997 05:00:00 GMT
    Cache-Control: no-store, no-cache, must-revalidate
    Pragma: no-cache
    Last-Modified: Sat, 17 Sep 2005 06:55:54 GMT
    Cache-Control: post-check=0, pre-check=0
    Content-Encoding: gzip
    Vary: Accept-Encoding
    Connection: close
    Content-Type: text/html

    Also keine weitere Location. Wenn ich aber usercp.php mit GET, also normal aufrufe, dann sind HTML Ausgaben mit "keine Berechtigung f?r diesen Bereich".

    MfG Dominik
  15. c*********c

    Also keine weitere Location. Wenn ich aber usercp.php mit GET, also normal aufrufe, dann sind HTML Ausgaben mit "keine Berechtigung f?r diesen Bereich".


    Es liegt wohl daran, dass das Cookie (in Deinem Falle PHPSESSID=afabfb241d93ee217c869ff9eb2bf72c) nicht zur?ck an den Server sendest.


    //edit: Du m?sstest folgende Zeile an Deine HTTP-Anfrage hinzuf?gen:

    Set-Cookie: PHPSESSID="DeineSessionID";

    Beitrag ge?ndert am 17.09.2005 10:34 von compactdisc
  16. Autor dieses Themas

    javadomi

    javadomi hat kostenlosen Webspace.


    Es liegt wohl daran, dass das Cookie (in Deinem Falle PHPSESSID=afabfb241d93ee217c869ff9eb2bf72c) nicht zur?ck an den Server sendest.


    //edit: Du m?sstest folgende Zeile an Deine HTTP-Anfrage hinzuf?gen:

    Set-Cookie: PHPSESSID="DeineSessionID";

    Beitrag ge?ndert am 17.09.2005 10:34 von compactdisc


    Ja, das habe ich doch nicht ?bersehen. Ich habe es auch so versucht, aber das Resultat war das selbe. Ich versuche nochmal den HTTP Header zu ?ndern.

    MfG Dominik
  17. Hmm, das Cookie k?nnte tats?chlich ein Problem darstellen. Ich habe auch keine Ahnung, ob man das einfach zur?ckschickt, oder ob es vorher irgendwie ver?ndert werden muss.

    Vielleicht geht es aber auch ohne. Fr?her hat Lima auch mal Session-IDs in der URL unterst?tzt, d.h. wenn du keine Cookies zur?ckschickst, h?ngt der PHP-Interpreter auf dem Server noch so was ?hnliches wie "?phpsessid=394720347802347" an alle Links in der empfangenen Seite an. Hab ich aber noch nicht getestet.

    Du kannst ja auch mal ein bisschen mit dem Firefox und der Live-HTTP-Headers-Erweiterung herumspielen. Dort sieht man sch?n, was der Browser schickt (wenn man z.B. ein Formular anfordert), und was der Server antwortet. Vielleicht hilft das ja.

    MfG
    alopex
  18. Autor dieses Themas

    javadomi

    javadomi hat kostenlosen Webspace.

    Hmmm. Bei anderen Seiten klappt es. Ich habe soein un?bersichtliches MFC Programm dazu runtergeladen und wei? nicht mal, wie es funktioniert, au?er, dass es Post Variablen verschicken kann. Evt. verschickt es einen falschen Header, obwohl ich ihn sehen kann. Ich werde mal das Programm genauer analysieren. Oder gibt es Programme, die in Ansi geproggt worden sind, also keine MFC? Wenn ja, dann w?re ich froh, wenn ihr mir Links dazu geben w?rdet. Bis dahin werde ich mich weiter mit diesen Programm qu?len. Danke im vorraus.

    sneppa schrieb:
    Bin ich im falschen thread gelandet oder was falsches gepostet weil mich niemand beachtet^^


    Wahrscheinlich habe ich die Frage zu undeutlich formuliert. Ich m?chte ein Programm programmieren, dass sich f?r dich bei Lima-City einloggt und z.B. eine MessageBox ausgibt, wieviel Gulden du heute verdient hast. Also nur ein Beispiel.

    MfG Dominik

    PS: Also ich brauche jetzt ein einfaches Programm, dass ein POST Formular simulieren kann, also wie ich es beschrieben habe mit den Header. Und eventuell dazu noch die HTML Ausgaben in eine Variable speichert.
    Das w?re dann alles.

    PS2: Oder k?nnte mir mal jemand ein Programm senden, dass einfach nur die HTML Ausgaben in eine Veriable speichert? Den Rest kann ich dann selber machen.

    Beitrag ge?ndert am 17.09.2005 22:25 von javadomi
  19. Autor dieses Themas

    javadomi

    javadomi hat kostenlosen Webspace.

    Also jetzt habe ich schon wieder ein Problem mit den einfachen aufrufen der HTML Ausgaben. Ich habe ein Programm geschrieben, dass http://www.lima-city.de/ aufruft und die Ausgaben in index.html speichert, aber das geht nicht, denn der Header ist 302 Found und wenn ich GMX aufrufe, dann sind die HTML Ausgaben ganz normal mit den Header 200 OK. Dasselbe ist auch bei http://www.piranho.com genauso wie der Header von Lima-city:

    #include <windows.h>
    #include <stdio.h>


    class CWinTcpSocket
    {
    public:
    CWinTcpSocket( void );
    virtual ~CWinTcpSocket( void );

    virtual bool Create( int af = AF_INET );
    virtual bool Connect( const char *pszHost, int nPort );
    virtual bool Bind( int nLocalPort );
    virtual bool Accept( CWinTcpSocket *pSocket );
    virtual bool Listen( int nBacklog = SOMAXCONN );
    virtual int Send( const void *pData, int nDataLen, int nFlags = 0 );
    virtual int SendText( const char *pszText );
    virtual int Recv( void *pData, int nDataLen, int nFlags = 0 );
    virtual int RecvLine( char *pszBuf, int nLen, bool bEcho = false );
    virtual bool Shutdown( int nHow );
    virtual bool Close( void );

    SOCKET m_hSocket;

    private:
    static DWORD m_dwRefCount;
    };

    #define GET_REQUEST_FORMAT "GET %s HTTP/1.0\r\n\r\n"
    #define HTTP_END_HEADER_STRING "\r\n\r\n"

    #define HTTP_OK_STRING "200 OK"
    #define HTTP_OK 200

    #define HTTPERR_REQUEST 0x0001
    #define HTTPERR_RESPONSE 0x0002
    #define HTTPERR_NOTOK 0x0004
    #define HTTPERR_HEADERSKIP 0x0008
    #define HTTPERR_FILEIO 0x0010
    #define HTTPERR_MEMORY 0x0020
    #define HTTPERR_DISCONNECTED 0x0040

    #define HttpErrorString( x, y ) itoa( y, x, sizeof( x ) )

    typedef enum _tagHttpVersion
    {
    HTTPVER_10 = 0x0100,
    HTTPVER_11 = 0x0101

    } HttpVersion;

    class CHttpDownload : public CWinTcpSocket
    {
    public:
    CHttpDownload( void );

    virtual int DownloadFile( const char *pszRemoteFile, const char *pszLocalFile );

    protected:
    bool MakeRequest( const char *pszRequest );
    int GetResponse( char *pszBuf );
    bool IsResponseOK( const char *pszResponse );
    int SkipHeader( void );
    int WriteToFile( const char *pszFile );
    };

    CHttpDownload *pDownloader = 0;

    #define SERVER "www.lima-city.de"
    #define FILENAME "/"
    #define LOCALNAME "index.html"

    int main()
    {
    pDownloader = new CHttpDownload();

    pDownloader->Create();
    pDownloader->Connect( SERVER, 80 );
    if( pDownloader->DownloadFile( FILENAME, LOCALNAME ) != 0 )
    {
    MessageBox( NULL, "Unable to download file", NULL, MB_OK );
    }

    pDownloader->Close();
    delete pDownloader;

    MessageBox( NULL, "Download complete!", NULL, MB_OK );

    return 0;
    }

    #define RECV_BUFFER_SIZE 1024

    CHttpDownload::CHttpDownload( void )
    : CWinTcpSocket()
    {

    }

    int CHttpDownload::DownloadFile( const char *pszRemoteFile, const char *pszLocalFile )
    {
    char *pMemBuf;

    if( !MakeRequest( pszRemoteFile ) )
    {
    return HTTPERR_REQUEST;
    }

    pMemBuf = new char[ RECV_BUFFER_SIZE ];

    if( pMemBuf == 0 )
    {
    return HTTPERR_MEMORY;
    }

    if( GetResponse( pMemBuf ) != 0 )
    {
    return HTTPERR_RESPONSE;
    }

    if( !IsResponseOK( pMemBuf ) )
    {
    MessageBox(NULL,pMemBuf,"",NULL);
    return HTTPERR_NOTOK;
    }

    delete[] pMemBuf;

    if( SkipHeader() != 0 )
    {
    return HTTPERR_HEADERSKIP;
    }

    return WriteToFile( pszLocalFile );
    }

    bool CHttpDownload::MakeRequest( const char *pszRequest )
    {
    char *pReqStr = new char[ 32 + strlen( pszRequest ) ];

    sprintf( pReqStr, GET_REQUEST_FORMAT, pszRequest );

    int nErr = SendText( pReqStr );

    delete[] pReqStr;

    if( nErr == 0 || nErr == SOCKET_ERROR )
    {
    return false;
    }
    else
    {
    return true;
    }
    }

    int CHttpDownload::GetResponse( char *pszBuf )
    {
    int nErr = RecvLine( pszBuf, RECV_BUFFER_SIZE );

    if( nErr == 0 || nErr == SOCKET_ERROR )
    {
    return HTTPERR_DISCONNECTED;
    }
    else
    {
    return 0;
    }
    }

    bool CHttpDownload::IsResponseOK( const char *pszResponse )
    {
    if( strstr( pszResponse, HTTP_OK_STRING ) == 0 )
    {
    return false;
    }
    else
    {
    return true;
    }
    }

    int CHttpDownload::SkipHeader( void )
    {
    int nLen;
    bool bFound = false;
    char cur = 0, prev_1 = 0, prev_2 = 0, prev_3 = 0;

    while( !bFound )
    {
    nLen = Recv( &cur, 1 );

    if( nLen == 0 || nLen == SOCKET_ERROR )
    {
    return HTTPERR_DISCONNECTED;
    }

    if( (cur == '\n') && (prev_1 == '\r') && (prev_2 == '\n') && (prev_3 == '\r') )
    {
    bFound = true;
    }
    else
    {
    prev_3 = prev_2;
    prev_2 = prev_1;
    prev_1 = cur;
    }
    }

    return 0;
    }

    int CHttpDownload::WriteToFile( const char *pszFile )
    {
    char *pBuf = new char[ RECV_BUFFER_SIZE ];
    FILE *pFile = fopen( pszFile, "w+b" );
    int nErr;

    if( pFile == 0 )
    {
    return HTTPERR_FILEIO;
    }

    for( ;; )
    {
    nErr = Recv( pBuf, RECV_BUFFER_SIZE );

    if( nErr == 0 )
    {
    break;
    }
    else if( nErr == SOCKET_ERROR )
    {
    fclose( pFile );
    delete[] pBuf;

    return HTTPERR_DISCONNECTED;
    }
    else
    {
    fwrite( pBuf, sizeof( char ), nErr, pFile );
    }
    }

    fclose( pFile );
    delete[] pBuf;

    return 0;
    }

    DWORD CWinTcpSocket::m_dwRefCount = 0;

    CWinTcpSocket::CWinTcpSocket( void )
    {
    WSADATA wd;

    if( ++m_dwRefCount == 1 )
    {
    ::WSAStartup( 0x0101, &wd );
    }
    }


    CWinTcpSocket::~CWinTcpSocket( void )
    {
    Close();

    if( --m_dwRefCount == 0 )
    {
    ::WSACleanup();
    }
    }


    bool CWinTcpSocket::Create( int af )
    {
    m_hSocket = ::socket( af, SOCK_STREAM, IPPROTO_TCP );

    if( m_hSocket == INVALID_SOCKET )
    {
    #ifdef _DEBUG
    ::MessageBox( NULL, "Socket creation failed - why?!", NULL, MB_OK | MB_ICONERROR );
    #endif

    return false;
    }
    else
    {
    return true;
    }
    }


    bool CWinTcpSocket::Connect( const char *pszHost, int nPort )
    {
    unsigned long ulAddr = 0;
    hostent *pEnt = ::gethostbyname( pszHost );
    SOCKADDR_IN addr;

    if( pEnt == 0 )
    {
    ulAddr = ::inet_addr( pszHost );

    if( ulAddr == INADDR_NONE )
    {
    #ifdef _DEBUG
    ::MessageBox( NULL, "Invalid address!", NULL, MB_OK | MB_ICONERROR );
    #endif
    return false;
    }
    else
    {
    addr.sin_family = AF_INET;
    }
    }
    else
    {
    memcpy( &ulAddr, pEnt->h_addr_list[0], sizeof( long ) );

    addr.sin_family = pEnt->h_addrtype;
    }

    addr.sin_addr.s_addr = ulAddr;
    addr.sin_port = ::htons( nPort );

    memset( addr.sin_zero, 0, sizeof( addr.sin_zero ) );

    if( ::connect( m_hSocket, (const sockaddr *)&addr, sizeof( SOCKADDR_IN ) ) == SOCKET_ERROR )
    {
    #ifdef _DEBUG
    char szBuf[64];

    sprintf( szBuf, "Unable to connect: %X / %d", ::WSAGetLastError(), ::WSAGetLastError() );

    ::MessageBox( NULL, szBuf, NULL, MB_OK | MB_ICONERROR );
    #endif

    return false;
    }
    else
    {
    return true;
    }
    }


    bool CWinTcpSocket::Bind( int nLocalPort )
    {
    SOCKADDR_IN addr;

    addr.sin_addr.s_addr = INADDR_ANY;
    addr.sin_family = AF_INET;
    addr.sin_port = ::htons( nLocalPort );
    memset( addr.sin_zero, 0, sizeof( addr.sin_zero ) );

    if( ::bind( m_hSocket, (const sockaddr *)&addr, sizeof( SOCKADDR_IN ) ) == SOCKET_ERROR )
    {
    return false;
    }
    else
    {
    return true;
    }
    }


    bool CWinTcpSocket::Accept( CWinTcpSocket *pSocket )
    {
    if( pSocket == 0 )
    {
    return false;
    }

    SOCKADDR_IN addr;
    int len = sizeof( SOCKADDR_IN );
    memset( &addr, 0, sizeof( SOCKADDR_IN ) );

    pSocket->m_hSocket = ::accept( m_hSocket, (sockaddr*)&addr, &len );

    if( pSocket->m_hSocket == INVALID_SOCKET )
    {
    return false;
    }
    else
    {
    return true;
    }
    }


    bool CWinTcpSocket::Listen( int nBackLog )
    {
    if( ::listen( m_hSocket, nBackLog ) == SOCKET_ERROR )
    {
    return false;
    }
    else
    {
    return true;
    }
    }


    int CWinTcpSocket::Send( const void *pData, int nDataLen, int nFlags )
    {
    return ::send( m_hSocket, (const char *)pData, nDataLen, nFlags );
    }


    int CWinTcpSocket::SendText( const char *pszText )
    {
    return Send( pszText, strlen( pszText ) );
    }


    int CWinTcpSocket::Recv( void *pData, int nDataLen, int nFlags )
    {
    return ::recv( m_hSocket, (char *)pData, nDataLen, nFlags );
    }


    int CWinTcpSocket::RecvLine( char *pszBuf, int nLen, bool bEcho )
    {
    int nCount = 0;
    int nRdLen;
    char ch = 0;

    while( ch != '\n' && nCount < nLen )
    {
    nRdLen = Recv( &ch, 1 );

    if( nRdLen == 0 || nRdLen == SOCKET_ERROR )
    {
    nCount = 0;
    break;
    }

    if( ch != '\n' && ch != '\r' )
    {
    pszBuf[nCount] = ch;
    nCount++;
    }

    if( bEcho )
    {
    Send( &ch, 1 );
    }
    }

    if( nCount != 0 )
    {
    pszBuf[nCount] = 0;
    }

    return nCount ? nCount : nRdLen;
    }


    bool CWinTcpSocket::Shutdown( int nHow )
    {
    return ::shutdown( m_hSocket, nHow ) == SOCKET_ERROR ? false : true;
    }


    bool CWinTcpSocket::Close( void )
    {
    return ::closesocket( m_hSocket ) == SOCKET_ERROR ? false : true;
    }

  20. Autor dieses Themas

    javadomi

    javadomi hat kostenlosen Webspace.

    Also jetzt habe ich den Header ?berpr?ft und dort wenn ich "www.lima-city.de" aufrufe ist die Location: "http://..lima-city.de/" Wenn ich das dann so aufrufe, dann wird die Seite nicht gefunden. Wie kann ich das machen?
  21. c*********c

    Dasselbe Problem habe ich ebenfalls (PHP).

    Wenn ich lima-city oder eine Userseite (bisher nur auf Pyrokar ausprobiert) aufrufe, gelange ich auf die 302-Seite (Found).
    Jedoch noch nie auf die gew?nschte Seite.

    Des Weiteren steht in der Location die falsche Adresse ...

    Interessant ist, dass andere Seiten (z.B. http://www.eggdrop.ch) direkt den HTML-Quellcode senden ...

  22. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!