Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: Linux Forum Linux-Web.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

18.09.2007, 22:13

PERL - Socket-Problem

Hi

Ich wollte auf Suse 9.3 ein Socketprogramm zum Laufen bringen.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use IO::Socket;
use IO::Select;

print "1\n";

my $l = IO::Socket::INET->new(Proto => 'tcp',LocalPort => 1338,Listen => 5,Reuse => 1);
die "Unable to setup socket: $!\n" unless defined $l;

print "2\n";

my $s = IO::Select->new($l);

print "3\n";

$s->add($l);

print "4";


Der Befehl $s->add($l); wird allerdings nicht ausgeführt.
(1,2 und 3 werden ausgegeben.. 4 nicht)
Das identische Programm läuft unter einem Windowsrechner einwandfrei.

Ich habe leider keine große ahnung von Linux.
Es wäre toll, wenn mir jemand weiterhelfen könnte!

Mfg Mainzl0r

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Mainzl0r« (18.09.2007, 22:14)


strcat

Unix Gladiator

  • »strcat« ist männlich

Beiträge: 2 331

Wohnort: /Earth/Germany/Bavaria/Regensburg

  • Nachricht senden

2

19.09.2007, 03:09

Fuehr es aus und poste die exakte Ausgabe hier. "-w" ist gesetzt hoffe ich oder?!
Christian 'strcat' Schneider <http://www.strcat.de/>
/* When all else fails, read the instructions. */

3

19.09.2007, 10:16

Hallo strcat!

Erstmal danke für die Antwort!

-w ist gesetzt.
Die exakte Ausgabe lautet:

Quellcode

1
2
3
1
2
3


und unter der 3 steht dann der Cursor.

mfg Mainzl0r

strcat

Unix Gladiator

  • »strcat« ist männlich

Beiträge: 2 331

Wohnort: /Earth/Germany/Bavaria/Regensburg

  • Nachricht senden

4

19.09.2007, 11:16

Sicher das sich die "4" nicht vor dem Prompt versteckt und uebersehen wurde? Ich hab zwar kein Suse zur Verfuegung, aber das Script ist von der Syntax her korrekt. Schreib mal "4\n" und sieh nach ob die Ziffer sich nicht vor dem Prompt versteckt.
Christian 'strcat' Schneider <http://www.strcat.de/>
/* When all else fails, read the instructions. */

5

19.09.2007, 11:40

Du hattest Recht mit der Vermutung!

Ich lasse nun weitere Zahlen ausgeben (alle mit \n) und komme nun bis zur 5

Quellcode

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
use IO::Socket;
use IO::Select;

print "1\n";

my $l = IO::Socket::INET->new( Proto => 'tcp',LocalPort => 1338, Listen => 5, Reuse => 1  );
die "Unable to setup socket: $!\n" unless defined $l;

print "2\n";

my $s = IO::Select->new();

print "3\n";

$s->add($l);

print "4\n";

while(1) {

print "5\n";

	my @r = IO::Select->select($s, undef, undef, undef);

print "6\n";
	foreach	(@r) {

print "7\n";
	if($_ eq $l) {
		my $n = $l->accept;
		my %f;
		$s->add($n);
		 if(<$n>=~m/\?(.+) http/i) {
  		  print "[".$n->peerhost()."] $1\n";
		  my @a = split(/&/, $1);
	            foreach (@a)
	            {
	              ($e, $v) = split(/=/, $_);
		       if($e && $v) {	
	              	$v =~ tr/+/ /;
	              	$v =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
	              	$f{$e} = $v;
		      }	
	            }
		 }
		 print $n "HTTP/1.0 200 OK\r\n";
		 print $n "Content-type: text/html\n\n";
		 if($f{p}) {
	 	  if($f{p} eq "i") {
		   &i($n, $f{u}, $f{m});
		  } elsif($f{p} eq "s") {
		   &s($n, $f{u});
		  } else {
		   &c($n);
		  }
		  } else {		 
		   &l($n, $f{u});
		  }
		} else {
		 &c($_);
		}
	}
}
Gibt es ne Möglichkeit, dass man ne Art Browser in der Konsole nutzen kann?
Nicht dass mit dem Skript alles in Ordnung ist, ich nur nich von außen mit nem Browser drauf zugreifen kann.

mfg Mainzl0r

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Mainzl0r« (19.09.2007, 11:43)


strcat

Unix Gladiator

  • »strcat« ist männlich

Beiträge: 2 331

Wohnort: /Earth/Germany/Bavaria/Regensburg

  • Nachricht senden

6

19.09.2007, 11:50

w3m, lynx, links oder elinks sind typische "Konsolenbrowser".
Christian 'strcat' Schneider <http://www.strcat.de/>
/* When all else fails, read the instructions. */

7

19.09.2007, 11:56

mit 'lnyx IP:1338' kann ich drauf zugreifen.

Nur wieso kann ich dann nicht von anderen Rechnern übers Netzwerk drauf zugreifen?
Auf SuSE läuft noch Apache. Darauf kann ich ohne Probleme zugreifen.

mfg Mainzl0r

strcat

Unix Gladiator

  • »strcat« ist männlich

Beiträge: 2 331

Wohnort: /Earth/Germany/Bavaria/Regensburg

  • Nachricht senden

8

19.09.2007, 12:29

Weil der Port von einer Firewall blockiert wird?
Christian 'strcat' Schneider <http://www.strcat.de/>
/* When all else fails, read the instructions. */

9

19.09.2007, 12:43

Es existiert aber keine Firewall

strcat

Unix Gladiator

  • »strcat« ist männlich

Beiträge: 2 331

Wohnort: /Earth/Germany/Bavaria/Regensburg

  • Nachricht senden

10

19.09.2007, 12:46

Wie versuchst Du darauf zuzugreifen und welche Fehlermeldung kommt?
Christian 'strcat' Schneider <http://www.strcat.de/>
/* When all else fails, read the instructions. */

11

19.09.2007, 12:52

Mit dem IE7

Bei 'http://IP:1338' kommt

Quellcode

1
2
3
4
5
6
7
8
9
Die Webseite kann nicht angezeigt werden. 
   
   Wahrscheinlichste Ursachen:
Sie haben keine Verbindung mit dem Internet hergestellt. 
Es ist ein Problem mit der Website aufgetreten. 
Die Adresse enthält eventuell einen Tippfehler. 
 
   Mögliche Vorgehensweise: 
     Diagnose von Verbindungsproblemen 


Bei 'IP:1338' kommt

Quellcode

1
2
3
4
5
6
7
8
9
Die Webseite kann nicht angezeigt werden. 
   
   Wahrscheinlichste Ursache:
Einige Inhalte bzw. Dateien auf dieser Webseite erfordern ein Programm, das Sie nicht installiert haben. 
 
   Mögliche Vorgehensweise: 
     Suchen Sie online nach einem Programm, mit dem diese Webinhalte angezeigt werden können.  
 
     Geben Sie die Adresse erneut ein.  

strcat

Unix Gladiator

  • »strcat« ist männlich

Beiträge: 2 331

Wohnort: /Earth/Germany/Bavaria/Regensburg

  • Nachricht senden

12

19.09.2007, 12:56

Quellcode

1
telnet IP 1338

Internetexplorer stinkt.
Christian 'strcat' Schneider <http://www.strcat.de/>
/* When all else fails, read the instructions. */

13

19.09.2007, 13:03

Quellcode

1
2
Verbindungsaufbau zu xxx...Es konnte keine Verbindung mit dem Host
hergestellt werden, auf Port 1338: Verbinden fehlgeschlagen

strcat

Unix Gladiator

  • »strcat« ist männlich

Beiträge: 2 331

Wohnort: /Earth/Germany/Bavaria/Regensburg

  • Nachricht senden

14

19.09.2007, 13:10

Quellcode

1
ping IP

Hoert sich eher nach einem Grundsaetzlichen Netzwerkproblem an.
Christian 'strcat' Schneider <http://www.strcat.de/>
/* When all else fails, read the instructions. */

15

19.09.2007, 13:14

Pingen geht ohne Probleme.. ca. 25ms und keine Antworten gehen verloren

strcat

Unix Gladiator

  • »strcat« ist männlich

Beiträge: 2 331

Wohnort: /Earth/Germany/Bavaria/Regensburg

  • Nachricht senden

16

19.09.2007, 13:35

Quellcode

1
2
3
4
5
6
7
8
9
10
$ perl -w socket.pl
1
2
3
4
5
6
7
Undefined subroutine &main::c called at socket.pl line 60.
$

Das bekomme ich als Fehlermeldung wenn ich mit "telnet IP 1338" auf das Script zugreife. Momentan kann ich das aber nicht genauer nachpruefen, weil ich keinen permanenten Zugriff auf eine Linux/Unix-Kiste mit Perl habe.
Christian 'strcat' Schneider <http://www.strcat.de/>
/* When all else fails, read the instructions. */

17

19.09.2007, 13:40

Dir fehlen dazu noch folgende Unterprogramme:

Quellcode

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
86
87
88
89
90
91
92
93
94
95
sub c {
 $s->remove($_[0]);
 $_[0]->close;
}

sub s {
 my ($s,$u) = @_;
 if($u) {
  print $s "<html>\n";
  print $s "<head>\n";
  print $s "<script language=javascript>\n";
  print $s " function s() {\n";
  print $s " }\n";
  print $s "</script>\n";
  print $s "</head>\n";
  print $s "<body>\n";
  print $s "Einfach was schreibt. Es wird sich zeigen ob jemand da ist *g*<br>";
  for($i=0; $i<=100; $i++) {
  print $s "<!-- buffer //-->\n";
  }
 } else {
  print $s "u?";
  &c($s);
 }
}

sub i {

 my ($s,$u,$m) = @_;
 if($u) {

 &m($s, "<b>$u<b>: $m") if($m);

  print $s "<html>\n";
  print $s "<head>\n";
  print $s "<script language=javascript>\n";
  print $s qq{ <script language=javascript> \n};
  print $s qq{  function scroller() {  \n};
  print $s qq{   window.scrollBy(0,20);  \n};
  print $s qq{   window.setTimeout("scroller()",20) \n};
  print $s qq{   } \n};
  print $s qq{   scroller(); \n};
  print $s qq{ </script> \n};
  print $s "</script>\n";
  print $s "</head>\n";
  print $s "<body onload=f()>\n";
  print $s "<form action=/ method=get name=e>\n";
  print $s " <div align=center>\n";
  print $s " <input type=hidden name=u value=$u>\n";
  print $s " <input type=hidden name=p value=i>\n";
  print $s " <input type=text name=m size=50>\n";
  print $s " <input type=submit value=Chat>\n";
  print $s " </div>\n";
  print $s "</form>\n";
  print $s "</body>\n";
  print $s "</html>\n";
 } else {
  print $s "u?";
 }
 &c($s);
}

sub l {
 my ($s,$u) = @_;
 if($u) {
print $s qq{<html>\n};
print $s qq{<head>\n};
print $s qq{<frameset rows="*,75">\n};
print $s qq{    <frame name="stream" src="/?p=s&u=$u" marginwidth="10" marginheight="10" scrolling="yes" frameborder="0" noresize>\n};
print $s qq{    <frame name="input" src="/?p=i&u=$u&m=Ich bin da *g*" marginwidth="10" marginheight="10" scrolling="no" frameborder="0" noresize>\n};
print $s qq{	<noframes></noframes>\n};
print $s qq{</frameset>\n};
print $s qq{</head>\n};
print $s qq{<body>\n};
 } else {
  print $s "<html>\n";
  print $s "<head>\n";
  print $s "</head>\n";
  print $s "<body>\n";
  print $s "<form action=/ method=get>\n";
  print $s "Nick:\n";
  print $s " <input type=text name=u>\n";
  print $s " <input type=submit value=Login>\n";
  print $s "</form>\n";
  print $s "</body>\n";
  print $s "</html>\n";
 } 
 &c($s);
}

sub m {
 foreach ($s->can_write) {
  print $_ "$_[1] <br>\n" if($_ ne $_[0]);
 }
}
wollte die nur nich alle posten.. weils doch sehr viel ist

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Mainzl0r« (19.09.2007, 13:41)


Thema bewerten