perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 25
Click for quality!




11.02.2012 / 23:44

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


BeitragServer zu einem Client-Code schreiben
Seitenanfang
Hallo Leute,

ich habe folgenden Code vom Client:


use IO::Socket;
use IO::Select;

$s_socket = IO::Socket::INET->new(
Proto=>"udp",
LocalAddr=>"$s_ip",
LocalPort=>"$s_port"
) or die ("\nCan't setup UDP socket on $ip$s_port: $!\n");

sub getLine
{
if ($g_stdin)
{
return <STDIN>;
}
else
{
return 1;
}
}

while ($loop = &getLine()) {

my ($sec,$min,$hour,$mday,$mon,$year) = localtime(time());
$ev_timestamp = sprintf("%04d-%02d-%02d %02d:%02d:%02d", $year+1900, $mon+1, $mday, $hour, $min, $sec);
$ev_datetime = "NOW()";
$ev_unixtime = time();

if(IO::Select->new($s_socket)->can_read(2)) { # 2 second timeout
$s_socket->recv($s_output, 1024);
$timeout = 0;
} else {
$timeout++;
if ($timeout % 60 == 0) {
&printEvent("Client", "No data since 120 seconds");
}
}

$s_peerhost = $s_socket->peerhost;
$s_peerport = $s_socket->peerport;

if ($timeout == 0)
{ }
}

An den Server wird folgendes geschickt:


my $dest = sockaddr_in($port, inet_aton($address));

$msg = $id.chr(0xfe).$id.chr(0xfe).$cli_address.chr(0xff);
$msg = chr(0xff).chr(0xff)."A".chr(0xff).$q_version.chr(0xff).$msg;
$bytes = send($::s_socket, $msg, 0, $dest);
&::printEvent("Server", "Sent $bytes bytes to server at '$address:$port' [Countrydata]", 1);

Nun möchte ich selber mal den Server nachbauen.
Leider habe ich noch keine Idee, wie ich den Ansatz durchführen soll.
Also was ich ja sicher weiß ist das der Server einen IO::Socket::INET braucht.
Ich habe mir dafür folgendes gedacht:


$sock = IO::Socket::INET->new(Listen => 5,
LocalAddr => 'localhost',
LocalPort => 9000,
Proto => 'tcp');

Damit habe ich ja die Portzuordnung fertig.
Wie schreibe ich dann eine andauernde Überprüfung?

Danke im Voraus!

Datum: 01.07.2008-08:43

Beitragre: Server zu einem Client-Code schreiben
Seitenanfang
Habe nun noch ein bisschen gegoogelt und geguckt und habe mir jetzt folgendes für den Server überlegt:


use strict;
no strict 'vars';

use IO::Socket;

$sock = IO::Socket::INET->new(LocalAddr => 'localhost',
LocalPort => 9000,
Proto => 'udp');

$main->repeat(100=>\&run);

sub run
{
while($new_sock = $listenSock->accept())
{
print RX "peer=".$new_sock->peerhost."\n";
$rxText="";
do
{
$new_sock->recv($rx_txt,4095);
$rxText.=$rx_txt;
} until (!length($rx_txt));

print RX "$rxText\n\n";
print LOGFILE "$rxText\n";
$new_sock->close();
}
}

Was meint ihr?
Ist das so möglich?

Datum: 01.07.2008-08:54

-






-
-