Schrift
[thread]4468[/thread]

Socket nur lesen



<< >> 6 Einträge, 1 Seite
Gast Gast
 2007-06-13 17:21
#37575 #37575
Hallo ich hab ein kleines Problem mit den Code:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/perl
$|=1;
print "Content-Type: text/html\r\n\r\n";
use strict;use IO::Socket;my $Server = new IO::Socket::INET (
PeerAddr => '192.168.88.100',
PeerPort => 2004,
Proto => 'tcp')
|| die "kann nicht zum Server verbinden!";
print "bin verbunden <br>";
while(<$Server>) {
print $_;
print "in schleife ich drinne sein";
}print "bin getrennt";
$Server->close();


Browser sagt:
bin verbunden
bin getrennt
aber er sollte unendlich lange laufen und auf nachrichten warten!

wie kann ich das machen?
MisterL
 2007-06-13 19:26
#37576 #37576
User since
2006-07-05
334 Artikel
BenutzerIn
[default_avatar]
Weiss der Kuckuck ob die FAQ zum Thema was bringt

Gruss MisterL
“Perl is the only language that looks the same before and after RSA encryption.”
betterworld
 2007-06-13 22:34
#37577 #37577
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
Sieht so aus, als ob der Server die Verbindung gleich wieder zu macht.  Kommst Du mit telnet drauf?  Warum benutzt Du kein warnings?
Am Ende der Schleife sollte man vielleicht auch mal gucken, ob $! gesetzt ist. Bzw ob <$socket> nun undef oder "" zurueckgegeben hat. Im ersten Fall liegt ein Fehler vor (der in $! steht), im zweiten wurde die Verbindung zugemacht.\n\n

<!--EDIT|betterworld|1181759880-->
red
 2007-06-14 20:52
#37578 #37578
User since
2007-06-14
2 Artikel
BenutzerIn
[Homepage] [default_avatar]
ja ich bin es nochmal ich habe mich jetzt registriert

und zwar hab ich herausgefunden das der Socket einmallig funktioniert und dannach nicht mehr.

aber der ServerSocket funktioniert auch für mehrer Clients das hab ich durch ein java programm getestet.

also denke ich mal liegt das an den ClientSocket.

was kann ich machen das ich das client programm immer wieder aufrufen kann und das es mehrere benutzer gleichzeitig verwenden können?
betterworld
 2007-06-14 22:13
#37579 #37579
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
[quote=red,14.06.2007, 18:52]was kann ich machen das ich das client programm immer wieder aufrufen kann und das es mehrere benutzer gleichzeitig verwenden können?[/quote]
Wenn ich die Frage richtig verstehe, glaube ich nicht ganz, dass das Problem beim Client liegt. Vielleicht hilft es Dir, wenn Du einen größeren Wert fuer "listen" beim Server angibst oder den Code vom Server (vereinfacht bitte) zeigst.
red
 2007-06-14 22:43
#37580 #37580
User since
2007-06-14
2 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hmmm aber mit Java kann ich so viele Clients starten wie ich will und alles funktioniert bestens!

so erklärung schleife jeder neue Client bekommt ein eigenes Thread.
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
public ClientHaendler(Socket clientsocket, ArrayList clientausgabe) {
       System.out.println("Neuer Client wird verbunden...");
       try {
           this.clientausgabe = clientausgabe;
           socket = clientsocket;
           InputStreamReader isReader = new InputStreamReader(socket.getInputStream());
           reader = new BufferedReader(isReader);
       } catch (Exception e) {
           System.out.println("Client konnte nicht verbunden werden!");
       }
   }

   public void run() {
       String nachricht;
       
       try {
           while((nachricht = reader.readLine()) != null) {
           System.out.println(nachricht);
           nachrichtVerteilen(nachricht);
           }
       } catch(Exception e) {
           System.out.println("Fehler beim Lesen von einer Nachricht!");
       }
   }
   
   public void nachrichtVerteilen(String nachricht) {
       Iterator iterator = clientausgabe.iterator();
       while(iterator.hasNext()) {
           try {
               PrintWriter writer = (PrintWriter) iterator.next();
               writer.println(nachricht);
               writer.flush();;
           } catch (Exception e) {
               System.out.println("Fehler beim verteilen der Nachricht!");
           }
       }
   }



wenn ich mich mit putty verbinde steht immer da Neuer Client wird verbunden...

also gehe ich nicht davon aus das es vorher was ist und der rest ist relativ selbst erklärend
<< >> 6 Einträge, 1 Seite



View all threads created 2007-06-13 17:21.