Thread Kommunikation 2er Programme (nicht Kind-Prozess) (16 answers)
Opened by Mates at 2007-11-30 20:55

Mates
 2007-12-01 23:26
#103372 #103372
User since
2006-08-15
21 Artikel
BenutzerIn
[default_avatar]
Hmm, wenn ich jetzt folgenden Codefetzen für den Clienten benutze, bekomme ich diese Fehlermeldung:

Quote
Bad arg length for Socket::unpack_sockaddr_in, length is 0, should be 16 at C:/Perl/lib/Socket.pm line 373.

bzw.:
Quote
recv: Unknown error at C:\Dokumente und Einstellungen\Operator\Eigene Dateien\Public\Homepage\cgi-bin\iosocketclient.cgi line 18.


Hier der Code:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/usr/bin/perl -w

use strict;
use CGI::Carp qw(fatalsToBrowser);
use IO::Socket;

my ( $HOSTNAME, $PORTNO, $MAXLEN, $nachricht );

$HOSTNAME       = '127.0.0.1' ;
$PORTNO         = 5151;
$MAXLEN         = 1024;
$nachricht      = 'Hallo Computer';

socket ( SOCKET, PF_INET , SOCK_DGRAM, getprotobyname ( 'udp' ) ) or die "socket: $!";
my $ipaddr              = inet_aton ( $HOSTNAME );
my $portaddr    = sockaddr_in ( $PORTNO, $ipaddr );

send ( SOCKET, $nachricht , 0, $portaddr ) == length ( $nachricht ) or die "cannot send to $HOSTNAME($PORTNO): $!";
$portaddr               = recv ( SOCKET, $nachricht, $MAXLEN, 0 ) or die "recv: $!";

( $PORTNO, $ipaddr )    = sockaddr_in ( $portaddr );
my $host = gethostbyaddr( $ipaddr, AF_INET );
print "$host($PORTNO) said $nachricht$/";



/edit:
Ok, habs jetzt mal damit probiert:
Server:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
use IO::Socket;
my $sock = new IO::Socket::INET (
        LocalHost => '127.0.0.1',
        LocalPort => '7070',
        Proto => 'tcp',
        Listen => 1,
        Reuse => 1,
);
die "Could not create socket: $!\n" unless $sock;

my $new_sock = $sock->accept();
while(<$new_sock>) {
        print $_;
}
close($sock);


Client:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
use IO::Socket;
my $sock = new IO::Socket::INET (
        PeerAddr => '127.0.0.1',
        PeerPort => '7070',
        Proto => 'tcp',
);
die "Could not create socket: $!\n" unless $sock;
print $sock "Hello there!\n";
close($sock);


Die Daten werden soweit erfolgreich geschickt :D
Nur bekomm ich beim Client trotzdem folgende Meldung:
Quote
Could not create socket: Unknown error

Wo liegt das Problem? Ist die Zeile 7 mit dem "die" nicht überflüssig/ falsch??

View full thread Kommunikation 2er Programme (nicht Kind-Prozess)