Toon posts:

[Winsock C/C++] Wie kan mij helpen?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb uit een tutorial voor Winsock programming het volgende geplukt en aangepast:
code:
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
54
55
56
57
//
// Winsock testprogramma
//
#include <windows.h>
#include <stdio.h>

#define RECVBUF 1024

// Declaraties
WSADATA ws;
int     d;
char    aa[RECVBUF];
struct  sockaddr_in a;
SOCKET  s;
int     ii;

// Routine om source van website te lezen
void readweb(char*, int);

// Main routine
main()
{
  readweb("213.10.55.124", 80);

  printf("\n\n-= EOF! =-\n");
  getchar();
}

// Routine om source van website te lezen
void readweb(char* ADDR, int PORT)
{
  d = WSAStartup(0x101,&ws);
  printf("WSASTARTUP = %d\n", d);

  s = socket(AF_INET,SOCK_STREAM,0);
  printf("SOCKET = %d\n", s);

  a.sin_family = AF_INET;
  a.sin_port = htons(PORT);
  a.sin_addr.s_addr = inet_addr(ADDR);

  d = connect(s, (struct sockaddr *)&a, sizeof( a));

  strcpy(aa,"GET / \r\n");
  strcat(aa,"HTTP 1.0 \r\n\r\n");
  send(s,aa,sizeof(aa),0);

  printf("\n\n");

  ii = 1;
  while (ii != 0)
  {
    ii = recv(s,aa,RECVBUF,0);
    printf("%s", aa);
  }

}

De bedoeling is dus dat de source van een webpagina wordt gelezen. Dit werkt wel (min of meer), maar de output is niet betrouwbaar. Wat klopt hier niet? :?

  • Pooh
  • Registratie: April 2001
  • Niet online

Pooh

Lees eens een boek

Wat bedoel je met 'niet betrouwbaar'?

Verwijderd

Topicstarter
Op maandag 18 februari 2002 17:35 schreef Poohbear het volgende:
Wat bedoel je met 'niet betrouwbaar'?
De source die uitgeprint wordt, komt niet overeen met de echte...

En dat is niet de bedoeling :D

  • Grum
  • Registratie: Juni 2001
  • Niet online
en wat komt er dan niet overeen ? :Z

  • Pooh
  • Registratie: April 2001
  • Niet online

Pooh

Lees eens een boek

Wat gebeurt er als je telnet naar die host:80 en een GET uitvoert? Wat is het verschil met wat je nu krijgt?

Verwijderd

Topicstarter
Op maandag 18 februari 2002 17:38 schreef Poohbear het volgende:
Wat gebeurt er als je telnet naar die host:80 en een GET uitvoert? Wat is het verschil met wat je nu krijgt?
Nou, telnet naar poort 80 en GET werkt perfect, maar mijn programma niet :)

Probeer het dan eens uit, dan zie je wat er fout gaat :D

Hij herhaalt een heel stuk van de code, en soms gooit 'ie er een vreemd karakter tussen...

Verwijderd

code:
1
ii = recv(s,aa,RECVBUF,0);

jij print aa uit, dit is altijd = RECVBUF (=1024),
de lengte van de data die je krijgt is ii

Je moet dus voor te beginnen ii chars van aa te nemen.

(edit: probeer ook eens wat betere namen te gebruiken ipv aa en ii)

Verwijderd

Topicstarter
Op maandag 18 februari 2002 17:41 schreef GrAviTy het volgende:
code:
1
ii = recv(s,aa,RECVBUF,0);

jij print aa uit, dit is altijd = RECVBUF (=1024),
de lengte van de data die je krijgt is ii

Je moet dus voor te beginnen ii chars van RECVBUF te nemen.
Hmm, ik ga ff iets uitproberen, denk dat je daar een goed punt hebt ;)

Verwijderd

Topicstarter
code:
1
2
3
4
5
6
  while (ii != 0)
  {
    ii = recv(s,aa,RECVBUF,0);
    aa[ii] = '\0';
    printf("%s", aa);
  }

Problem solved! :D

Thanx :D
Pagina: 1