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
