[Perl] Sockets - berichten sturen en lezen

Pagina: 1
Acties:

  • Kapoen
  • Registratie: Mei 2002
  • Laatst online: 22:10
Ik ben bezig aan een eenvoudig programmatje waarmee je via een
TCP socket berichtjes kan sturen en uitlezen.

Volgende code heb ik reeds:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
...
use socket;

socket(VERBINDING, PF_INET, SOCK_STREAM, getprotobyname('tcp'));

$adres = sockaddr_in(80,inet_aton('www.eenadres.com'));

connect(VERBINDING,$adres);

 print VERBINDING "GET /index.html HTTP/1.1\r\n\r\n";
 
 while ($lijntje = <VERBINDING>) {
      print $lijntje;
   }


Als ik mijn programmatje uitvoer verschijnt dit als uitvoer:
Undefined subroutine &main::inet_aton called at webClt.pl line 11.

Nochtans staat er een voorbeeld in mijn cursus van Perl dat inet_aton gebruikt.
Ben ik nu totaal op het verkeerde spoor? :D

Oja, ik ben er mij van bewust dat dit stukje code niet echt conform de HTTP RFC is, maar dit is slechts een beginfase: ik wil een message sturen en gewoon uitschrijven wat er terugkomt als antwoord, of dit nu een hoop foutmeldingen zijn of andere leuke dingetjes maakt voorlopig nog niet uit ;)

Clowns to the left of me, Jokers to the right


  • odysseus
  • Registratie: Augustus 2000
  • Laatst online: 21:47

odysseus

Debian GNU/Linux Sid

Werkt het wel als je in plaats van inet_aton(..) iets gebruikt als Socket::inet_aton(..)? Je hebt namelijk een lowercase 'use socket' bovenaan staan, het hoort bij mijn weten 'use Socket' te zijn.

Leven is het meervoud van lef | In order to make an apple pie from scratch, you must first create the universe.


  • Kapoen
  • Registratie: Mei 2002
  • Laatst online: 22:10
Nu je het zegt, t was me nog niet opgevallen dat socket weer eens met
kleine letter stond. Die use Socket moet idd met hoofdletter, mijn windows
IDE (in dit geval Ultra-Edit) zet 'Socket' altijd om naar socket. Met Vi(M) heb
ik hier nooit last van.

Om verder te gaan op die Socket::inet_aton(..) : zo lijkt het inderdaad te
moeten, ik heb een paar referenties gevonden waarin men ook zo werkt.
Dus ik zal me hier verder in verdiepen dan.

Bedankt voor de tip :D _/-\o_

Clowns to the left of me, Jokers to the right


  • Kapoen
  • Registratie: Mei 2002
  • Laatst online: 22:10
Soz dat ik dit topic moet 'kicken', maar ik heb nog een probleempje met mijn webclient. Ik heb mijn code om een socket te maken en te verbinden met een url aangepast:

code:
1
2
3
4
socket(VOET, PF_INET, SOCK_STREAM, getprotobyname('tcp')) || die $boodschap1;
 $adres = sockaddr_in(80,Socket::inet_aton("$url"));

 connect(VERBINDING,$adres) || die $boodschap2;


als ik een url invoer (is een parameter voor de console) krijg ik steeds
de inhoud van $boodschap2 te zien, m.a.w. er duikt dus een probleem
op bij het connecten van een url en mijn handle.

Wat doe ik hier verkeerd?
[edit:] ik zie de RD/TD indicatoren aangaan op mijn kabelmodem dus ik vermoed dat er wel een of andere poging tot connectie gebeurd met de ingegeven url

[edit2:] ok probleempje is al opgelost ondertussen, ik had een stomme fout gemaakt, mijn socket handle heet VOET en ik wou connecten op een andere handle :)

Clowns to the left of me, Jokers to the right


  • Kapoen
  • Registratie: Mei 2002
  • Laatst online: 22:10
net op een ander probleempje gekomen:

hoe haal ik pagina's op via een proxy server? Zolang ik urls opvraag die rechtstreeks van het netwerk van mijn isp komen gaat alles goed, maar daarbuiten krijg ik alleen time-outs van mijn socket.

Heeft perl speciale syntax om een proxy in te stellen of moet ik gewoon mijn webclientje 'recycleren' om een proxy te kunnen aanspreken? :D

Clowns to the left of me, Jokers to the right