WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Perl + Sockets + SSL (https://www.wn.se/forum/showthread.php?t=6247)

jonasaskas 2005-02-18 15:04

Hej,

Har rivit mitt (numera gråa...) hår ett tag nu, för att försöka initiera kommunikation över sockets i Perl, men får inte till det. Någon vänlig själ som kan bidra med tips?

Det jag skall göra är att i Perl anropa en applikation på en annan server (https), och därifrån erhålla ett svar som jag sparar till en variabel.

Har försökt med t.ex. följande utan lyckat resultat;

Kod:

#!/usr/bin/perl

use Socket;

&Oppna_Socket);

sub Oppna_Socket()
{
    my $server_namn = "secure.server.se";
    my $port = "https";
    my $sida = "/skript.php?variabler";

    $port = getservbyname($port, 'tcp') if $port !~ /^[0-9]/;
    socket (SOCKET, PF_INET, SOCK_STREAM, 0) or die "Socketfel: $!";
    connect(SOCKET, sockaddr_in($port, inet_aton($server_namn)));

    select SOCKET; $| = 1; select STDOUT;

    print SOCKET "GET ${sida} HTTP/1.0\n\n";
    $Las_In_Text .= $rad while $rad = <SOCKET>;
    close(SOCKET);

    print "Content-type: text/plain\n\n";
    print "${Las_In_Text}\n\n";
}

Har även testat att använda IO::Socket::INET utan lyckat resultat.

Konkret kodexemepl uppskattas!

Mvh,
Jonas

Thomas 2005-02-18 15:19

Kod:

my $port = "https";
Borde väl rimligtvis vara
Kod:

my $port = "443";
Du gör ju senare en kontroll så att variabeln $port bara blir getservbyname($port, 'tcp') om $port inte är numerisk.
Kod:

if $port !~ /^[0-9]/;
Thomas

kers 2005-02-18 15:24

Finns det någon anledning till att du använder socketsmodulen rakt av ? Om du kan installera egna perlmoduler så är en enkel lösning att köra LWP (http://lwp.linpro.no/lwp/), med LWP::Simple så är det jättesmidigt. Kan dras ner från CPAN ( perl -MCPAN -e 'install LWP::Simple' alt dra ner tarbollen och installera själv) och är väldigt stabilt, använt och genomarbetat.

kodexempel:

Kod:

use LWP::Simple;
$sidan= get("https://www.server.co/script.php?alsladlasd");
if ($sidan)
 *{
 * * print $sidan;
 *}
 *else
 *{
 * * print "kunde inte ladda sidan";
 *}


Thomas 2005-02-18 15:27

Jag rekommenderar också LWP.

Thomas

jonasaskas 2005-02-21 08:33

Tack för tipset om LWP, skall kolla på det.


Alla tider är GMT +2. Klockan är nu 17:43.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson