Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]6952[/thread]

Fehler im Script...: und finde ihn nicht.



<< >> 5 Einträge, 1 Seite
zipster
 2005-05-03 12:17
#54504 #54504
User since
2004-09-06
458 Artikel
BenutzerIn
[default_avatar]
Hi,

ich habe irgendwie ein Fehler im Script und finde ihn nicht.
Könnt ihr mir vielleicht helfen ihn zu finden?

Grundlegend soll folgendes passieren:

Will per telnet (testweise) auf den Server connecten und z.B. "Test" übermitteln. Der Server soll prüfen ob es schon ein Fenster mit dem Titel "Test" gibt.
Wenn ja sag dem Client bescheid.
Wenn nein mach ein "cmd.exe" Fenster mit dem Title "Test" auf.

Aber irgendwie funktioniert die Überprüfung nicht. Er bekommt immer die 0 als Rückmeldung.
Wenn ich im Script was Festes übergebe dann funktioniert es, aber wenn es vom Client kommt leider nicht... könnt ihr mir verraten warum?


Hier der CODE
Code: (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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#!/usr/local/bin/perl


use IO::Socket;
use IO::Select;
use Win32::API;
use win32;
#use strict;
#use warnings;

my $server = IO::Socket::INET->new(
LocalPort => 2005,
type =>SOCK_STREAM,
Reuse => 1,
Listen => 10
) or die "Server läuft nicht: $@\n";
my $select = IO::Select->new($server);
while(my @readable = $select->can_read)
{
foreach my $socket (@readable)
{
if($socket == $server)
{
my $client = $socket->accept;
print "New client connects\n";
$select->add($client);
$client->print("Welcome\n");
}
else
{
my $computername = $socket->getline;
if (defined $computername)
{
chomp $computername;
my $WindowAvailable ="";
$WindowAvailable = FindWindow("$computername");
print "$WindowAvailable\n";


if ($WindowAvailable == 0)
{
#$client->print ("Window ist nicht vorhanden\n");
my $programmpfad = $0;
$programmpfad =~ s/[^\\]*?$//;
system "start \"$computername\" cmd.exe";
$socket->print("reconnect\n");
$socket->print("port=12346\n");
#delete_socket($select, $socket);
}
else
{
$socket->print ("Window ist vorhanden\n");
$socket->print("process still running\n");
$socket->print("port=2005\n");
}
}
else
{
print "Client says: [$computername]\n";
}
}

}
}


sub FindWindow
{
my $WindowName = shift(@_);
chomp $WindowName;
print "$WindowName";
my $FindWindow = new Win32::API('user32', 'FindWindow', [P,P], N);# or die print "$!";
my $name = 'Telnet 127.0.0.1';
my $class = 0;
my $topHwnd = $FindWindow->Call($class, $WindowName);
print "$topHwnd\n";
return $topHwnd;
}

sub delete_socket
{
my ($sel, $sock) = @_;
$sel->remove($sock);
$sock->close;
}
GwenDragon
 2005-05-03 15:07
#54505 #54505
User since
2005-01-17
14748 Artikel
Admin1
[Homepage]
user image
Wo soll das Fenster existieren? Auf dem Client?
zipster
 2005-05-03 15:13
#54506 #54506
User since
2004-09-06
458 Artikel
BenutzerIn
[default_avatar]
Strat
 2005-05-03 15:34
#54507 #54507
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
handelt es sich um unterschiedliche betriebssysteme? (z.B. Linux/Windows?) wenn ja, dann verwende besser kein \n beim ->print, sondern besser die konstante CRLF aus Socket, z.B.
Code: (dl )
1
2
use Socket qw(:crlf);
$socket->print("irgendwas" . CRLF);
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
zipster
 2005-05-03 16:27
#54508 #54508
User since
2004-09-06
458 Artikel
BenutzerIn
[default_avatar]
Ne eigentlich basiert alles auf Windows.
Ich bin atm noch in der Testphase und teste alles lokal, vondem her kann es ja eigentlich nicht daran liegen.

Aber ich teste es mal
<< >> 5 Einträge, 1 Seite



View all threads created 2005-05-03 12:17.