Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

18.05.2003, 17:20

per winsock php auslesen ?

Hi Leutz !

Ich wollt per Winsock eine Server.php auslesen (Server.php?action=Getlist) und auch schreiben können (Server.php?action=add&name=blabla&pass=blablabla....).

Hat jemand ne Idee wie das geht ?

thx !

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

18.05.2003, 17:34

Hehe, genau das habe ich bei Ricardo 2 für die Online-Highscores gemacht. Aber das mit WinSock zu machen ist viel zu umständlich, Du müsstest ja das gesamte HTTP-Protokoll implementieren!
Das geht so (linken mit WinINet.lib):

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <WinINet.h>

HINTERNET hInternet;
HINTERNET hFile;
DWORD dwNumBytesRead;
char acBuffer[16384];

if(InternetAttemptConnect(0) != ERROR_SUCCESS) return false;
if(!InternetCheckConnection("http://www.scherfgen-software.de", FLAG_ICC_FORCE_CONNECTION, 0)) return false;

hInternet = InternetOpen("Scherfgen-Software Ricardo 2", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
if(hInternet == NULL) return false;

hFile = InternetOpenUrl(hInternet, "http://www.scherfgen-software.de/index.php", NULL, 0, INTERNET_FLAG_RELOAD, 0);
if(hFile == NULL)
{
    InternetCloseHandle(hInternet);
    return false;
}

ZeroMemory(acBuffer, 16384);
if(!InternetReadFile(hFile, acBuffer, 16384, &dwNumBytesRead))
{
    InternetCloseHandle(hFile);
    InternetCloseHandle(hInternet);
    return false;
}

// In acBuffer befindet sich jetzt der HTML-Text von index.php.

InternetCloseHandle(hFile);
InternetCloseHandle(hInternet);

3

18.05.2003, 17:47

THX MAN THX THX THX !!!!!!!

Dann kann ich ja mein 2. Projekt endlich starten :)

Dank dir schatzi .... aeh ... David ;)

THXXXXXX

// EDIT \\

FUNTZ SUPER !!!!!!!

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

18.05.2003, 19:28

Freut mich, dass ich helfen konnte :)

5

18.05.2003, 19:45

Wie kann ich eigentlich nur eine Zeile lesen ohne die Größe zuwissen bzw. die anhand der \n's aufsplitten ?

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

6

18.05.2003, 19:58

Wahrscheinlich garnicht... keine Ahnung! Ich weiß nicht, ob die Funktion schrittweise lesen kann. Ansonsten vielleicht immer 100 Bytes lesen, gucken, ob ein \n drin ist, und wenn nicht, weitere 100 Bytes lesen.

7

19.05.2003, 13:51

mit winsocks gehts auch:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <stdio.h>
#include <winsock.h>

int main()
{
    struct sockaddr_in server;
    struct hostent *host_info;
    int sock;
    char buffer[8192];
    int count;
    
    /* Initialisiere TCP für Windows ("winsock") */
    short wVersionRequested;
    WSADATA wsaData;
    wVersionRequested = MAKEWORD (1, 1);
    if (WSAStartup (wVersionRequested, &wsaData) != 0) {
        fprintf( stderr, "Failed to init windows sockets\n");
        exit(1);
    }

    sock = socket( PF_INET, SOCK_STREAM, 0);
    memset(&server, 0, sizeof(server));

    host_info = gethostbyname("www.test.de");

    memcpy((char *)&server.sin_addr, host_info->h_addr, host_info->h_length);

    printf("IP: %s\n", inet_ntoa(server.sin_addr));

    server.sin_family = AF_INET;
    server.sin_port = htons(80);

    if ( connect( sock, (struct sockaddr*)&server, sizeof( server)) < 0) {
        perror( "can't connect to server");
        exit(1);
    }
    printf("Connected!\n");

    sprintf(buffer, "GET server.php?action=getlist HTTP/1.0\r\nHost: www.test.de\r\nUser-Agent: Mein Browser\r\nAccept: */*\r\n\r\n");
    printf("Sende Anfrage:\n\t%s\n", buffer);
    send(sock, buffer, strlen(buffer), 0);

    do
    {
        count = recv(sock, buffer, sizeof(buffer), 0);
        buffer[count] = '\0';
        printf(buffer);
    } while (count > 0);

    /* Schließe Verbindung und Socket */
    closesocket( sock);
    return count;
}
stay tight, project universe comes back!
### project earth <> 2004 ###

8

19.05.2003, 14:24

noch perfekter :)

9

19.05.2003, 14:26

was muss ich dafür linken ?[/quote]

10

19.05.2003, 14:50

sry, hab ich vergessen

ws2_32.lib
stay tight, project universe comes back!
### project earth <> 2004 ###

Werbeanzeige