Thread IO::SOCKET::INET recv abbrechen (3 answers)
Opened by burnersk at 2008-10-20 16:55

burnersk
 2008-10-20 16:55
#115655 #115655
User since
2008-03-25
83 Artikel
BenutzerIn
[default_avatar]
Hallo.

Ich habe mir mal so einen kleinen Deamon-'Server' gebastelt. Nun möchte ich gerne das recv abbrechen; oder zumindest wieder etwas senden könenn.
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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
sub ChldExecute($)
{
  my $client = shift || return (0);
  
  # Server Banner senden
  $client->send('INFO $Server: RSM3D$ $Revision$');
  
  # Warte auf Request
  $client->send('AWTR Await request');
  my $request = eval {
    local $SIG{'ALRM'} = sub { exit(1); };
    my $reqtemp = '';
    alarm(1);
    $client->recv($reqtemp, 2048);
    alarm(0);
    return ($reqtemp);
  };
  
  # Request auswerten
  if (!$request || $request eq '')
  {
    # Fehler beim Empfang des Requests
    
    $client->send('ERROR Request not received');
    $client->send('QUIT');
    return (0);
  }
  else
  {
    # Request jetzt analysieren
    
    $client->send('ERROR Processing not implemented');
    $client->send('QUIT');
    return (0);
  }
  
  $client->send('ERROR Haeh???');
  $client->send('QUIT');
  
  return (1);
}

Wenn ich das mit $client->recv($reqtemp, 2048); auskommentiere, dann wird nach einer Sekunde der andere Text gesendet, andernfalls scheint der Client nach der Sekunde nichts mehr zu lesen.

View full thread IO::SOCKET::INET recv abbrechen