Toon posts:

[JAVA] echo naar alle threads

Pagina: 1
Acties:

Verwijderd

Topicstarter
Goed.. ik ben dus een beetje aan het java-en, en ik was bezig met een proggie dat luistert op een poort. Als ik daarna toe telnet, krijg ik een welkomsttekstje, en kan ik vanalles typen, tot dat ik BYE type, dan sluit hij de verbinding.

Ik doe dit dus met threads.. Meerdere mensen kunnen dus tegelijk inloggen. Nu vroeg ik mij echter af, of het simpel is om een regel tekst wat een persoon typt, te versturen naar alle threads en dus in diverse telnet windows echo...

Ik hoop dat iedereen een beetje snapt wat ik bedoel?

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Als je met een gedistributeerd systeem werkt, heb je twee manieren om data uit te wisselen tussen de threads/processen
• Je gebruikt gedeelde variabelen
• Je stuurt de Threads een message

De gedeelde variabele met dit probleem zou een gesynchroniseerde lijst kunnen zijn, welke door alle threads uitgelezen wordt. Hier zou je bijv Collections.getSynchronizedList( new LinkedList() ); voor kunnen gebruiken
Voor de messages oplossing zou je kunnen werken via sockets, maar ook systemen als nio kunnen voldoen.

Kijk trouwens uit als je dmv events gaat werken. Events en Threads gaan vaak niet lekker samen.

[ Voor 8% gewijzigd door Glimi op 15-10-2003 11:47 ]


Verwijderd

als je gewoon een administratie van je threads bijhoud kan je toch naar alle connecties (ik neem aan aan de 'server' kant 1 thread voor iedere connectie) het berichtje sturen?

pseudo code :
voor iedere <connectie> in <connectielijst> doe
zend tekst <txt> naar <connectie>
einde doe

/me denkt aan de tijd dat ik tijdens mijn opleiding zelf ook bezig was een chat programma in java te bouwen...

Verwijderd

Topicstarter
Glimi schreef op 15 October 2003 @ 11:46:

Voor de messages oplossing zou je kunnen werken via sockets, maar ook systemen als nio kunnen voldoen.
ik werk inderdaad met sockets..

dit is de code voor nieuwe users:

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
try
{
    ServerSocket s = new ServerSocket(1234);
    for (;;)
    {
       Socket incoming = s.accept();
       System.out.println("Spawning " + i);
       new ThreadedEchoHandler(incoming, i).start();
       i++;
    }
}
catch (Exception e)
{
   System.out.println(e);
}


voor het afhandelenen van de echo's gebruik ik nu de volgende code:

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
try
{
     BufferedReader in = new BufferedReader(new InputStreamReader(incoming.getInputStream()));
     PrintWriter out = new PrintWriter(incoming.getOutputStream(), true);
     out.println("Hello! Enter Bye to exit");
     boolean done = false;
     while (!done) 
     {
        String str = in.readLine();
        if (str == null) done = true;
        else 
        {
           out.println("Echo (" + counter + "): " + str);
           if (str.trim().equals("BYE"))
               done = true;
        }
     }
     incoming.close();
}


ik zou dus een bericht kunnen sturen naar alle threads via sockets... ?

  • nxt
  • Registratie: November 2001
  • Laatst online: 12-06 10:00

nxt

Als je nu de instantie van ThreadedEchoHandler die je aanmaakt ergens bewaard bijvoorbeeld in een list
dan kun je met een iterator die lijst doorlopen als je naar alle threads een berichtje wilt sturen

[ Voor 6% gewijzigd door nxt op 15-10-2003 15:23 ]


  • Stephan Oudmaijer
  • Registratie: Oktober 2000
  • Laatst online: 16-08-2023
nxt schreef op 15 October 2003 @ 15:23:
Als je nu de instantie van ThreadedEchoHandler die je aanmaakt ergens bewaard bijvoorbeeld in een list
dan kun je met een iterator die lijst doorlopen als je naar alle threads een berichtje wilt sturen
Bah List, neem dan een ArrayList :)

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
CK schreef op 15 oktober 2003 @ 15:28:
[...]


Bah List, neem dan een ArrayList :)
En wat is het verschil tussen een List en een ArrayList? ( Behalve dat er nog meer implementaties van een List zijn ). List is gewoon een Interface die onder andere geimplementeerd wordt door ArrayList

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Verwijderd

nou laten het woordje "performance" maar eens noemen

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Verwijderd schreef op 15 October 2003 @ 15:49:
nou laten het woordje "performance" maar eens noemen
En nogmaals, wat is het verschil. Uit de java documentatie
Interface List
All Superinterfaces:
Collection
All Known Implementing Classes:
AbstractList, ArrayList, LinkedList, Vector
ArrayList is dus gewoon een implementatie van List. Zeggen dat ArrayList betere "Performance" heeft als List heeft is gewoon onzinnig.

[ Voor 10% gewijzigd door Woy op 15-10-2003 15:55 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • Robtimus
  • Registratie: November 2002
  • Laatst online: 14:03

Robtimus

me Robtimus no like you

CK schreef op 15 oktober 2003 @ 15:28:
[...]


Bah List, neem dan een ArrayList :)
Wat rwb zegt. Als ie een ArrayList neemt, neemt ie meteen een List.
Verder heeft een List niet eens performance omdat er geen implementatie in zit. Dat is overgelaten aan ArrayList, LinkedList, Vector, etc.

[ Voor 25% gewijzigd door Robtimus op 15-10-2003 15:56 ]

More than meets the eye
There is no I in TEAM... but there is ME
system specs


Verwijderd

Als je gebruik zou maken van een class variabele met een List aan messages die naar alle clients moeten, dan zit je met het probleem dat elke client zelf moet bijhouden welke message(s) hij al heeft gedisplayed. En 1 van de clients moet de List opschonen, das dus is niet echt een lekker. Of je zult er een administratie systeem bij moeten schrijven dat bijhoudt hoeveel clients een message al hebben laten zien en dus of een message wegkan uit de List ja of nee. Ook zal elke client toch te horen moeten krijgen dat er een nieuwe message bij is gekomen; of zelf poll-en.
Ik denk dat je toch er aan moet denken dat elke thread een Listener wordt (van een centrale server) en dan de nieuwe message krijgt toegestuurd van die server. Maar het is zo maar een gedachte. Volgens mij moet je dit ontwerpen met een flow diagram voor je neus, en vooral zonder code.

@CK:
Als je J2SE 1.4 Certified Programmer bent, hoe kun je dan zo'n domme opmerking maken :?

  • Stephan Oudmaijer
  • Registratie: Oktober 2000
  • Laatst online: 16-08-2023
Verwijderd schreef op 15 oktober 2003 @ 16:35:
Als je gebruik zou maken van een class variabele met een List aan messages die naar alle clients moeten, dan zit je met het probleem dat elke client zelf moet bijhouden welke message(s) hij al heeft gedisplayed. En 1 van de clients moet de List opschonen, das dus is niet echt een lekker. Of je zult er een administratie systeem bij moeten schrijven dat bijhoudt hoeveel clients een message al hebben laten zien en dus of een message wegkan uit de List ja of nee. Ook zal elke client toch te horen moeten krijgen dat er een nieuwe message bij is gekomen; of zelf poll-en.
Ik denk dat je toch er aan moet denken dat elke thread een Listener wordt (van een centrale server) en dan de nieuwe message krijgt toegestuurd van die server. Maar het is zo maar een gedachte. Volgens mij moet je dit ontwerpen met een flow diagram voor je neus, en vooral zonder code.

@CK:
Als je J2SE 1.4 Certified Programmer bent, hoe kun je dan zo'n domme opmerking maken :?
Euhm enige reden waarom ik arraylist zeg is omdat je dan ook makkelijk aan de hand van een index door je collectie kan springen en niet met een iterator hoef te mieren. That`s all, ArrayList is er om het leven makkelijker te maken. List is de interface en niet de implementatie, ik geef alleen aan dat een arraylist voor de topic starter misschien een makkelijke oplossing is.

Wil nog wel verder toelichten ik ben zelf een array-o-fiel, en doe het boekhouden liever zelf en gebruik vrijwel nooit een list om objecten op te slaan, nasty habbit van mij maar het is zo :)

[ Voor 12% gewijzigd door Stephan Oudmaijer op 15-10-2003 16:51 ]


  • Eelke Spaak
  • Registratie: Juni 2001
  • Laatst online: 16-08 19:14

Eelke Spaak

- Vlad -

Toevallig heb ik met wat geklad ooit eens precies zo'n applicatie geschreven; deze sluit niet zelf af met een 'BYE' overigens. Zie maar wat je ermee doet. Let er wel op dat de error-handling op de meeste plaatsen buitengewoon incorrect is enzo :) .

edit:
Oja, ik werk lekker met een Vector, en niet met een ArrayList :P


Java:
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
96
97
98
99
import java.io.*;
import java.net.*;
import java.util.*;

public class TcpServer extends Thread
{
    private int             port;
    private final Vector    connections;
    
    public TcpServer(int port)
    {
        connections = new Vector();
        this.port = port;
        start();
    }
    
    void sendMsg(String line)
    {
        Vector conPool = (Vector)connections.clone();
        Enumeration enum = conPool.elements();
        while (enum.hasMoreElements())
        {
            Object o = enum.nextElement();
            try
            {
                Socket s = (Socket)o;
                Writer out = new OutputStreamWriter(s.getOutputStream());
                out.write(line + "\r\n");
                out.flush();
                System.out.println("Written to connection: " + line);
            }
            catch (NullPointerException e)
            {
                connections.removeElement(o);
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }
        }
    }
    
    public void run()
    {
        try
        {
            ServerSocket ss = new ServerSocket(port);
            
            System.out.println("Server started at port " + port + ".");
            
            while (true)
            {
                try
                {
                    final Socket client = ss.accept();
                    
                    System.out.println("Client made connection.");
                    
                    connections.addElement(client);
                    new Thread()
                    {
                        public void run()
                        {
                            try
                            {
                                BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
                                String line;
                                while ((line = in.readLine()) != null)
                                {
                                    System.out.println("Received from connection: " + line);
                                    sendMsg(line);
                                }
                                
                                in.close();
                            }
                            catch (SocketException e)
                            {
                                connections.removeElement(client);
                                return;
                            }
                            catch (Exception e)
                            {
                                e.printStackTrace();
                            }
                        }
                    }.start();
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
            }
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
}

[ Voor 11% gewijzigd door Eelke Spaak op 15-10-2003 16:57 ]

TheStreme - Share anything with anyone


Verwijderd

agh J2SE 1.4 Certified Programmer... stelt echt helemaal niets voor! het wilt alleen zeggen dat de "basis" van programmeren in java onder knie hebt. Moet wel zeggen dat het een hele beperkte basis is!

kort gezegt als J2SE 1.4 Certified Programmer sluit je je niet uit voor domme opmerkingen!

agh het feit is dat sommige zich heel graag achter papiertjes verschuilen als byv "J2SE 1.4 Certified Programmer"...

  • Stephan Oudmaijer
  • Registratie: Oktober 2000
  • Laatst online: 16-08-2023
Verwijderd schreef op 15 October 2003 @ 16:59:
agh J2SE 1.4 Certified Programmer... stelt echt helemaal niets voor! het wilt alleen zeggen dat de "basis" van programmeren in java onder knie hebt. Moet wel zeggen dat het een hele beperkte basis is!

kort gezegt als J2SE 1.4 Certified Programmer sluit je je niet uit voor domme opmerkingen!

agh het feit is dat sommige zich heel graag achter papiertjes verschuilen als byv "J2SE 1.4 Certified Programmer"...
Wie beweert het tegendeel dan? ben het volledig met je eens, het zegt helemaal niets. Ik werk vrijwel alleen maar met EJB 2.0 en Struts, voor de meeste bedrijven wel iets waardevoller dan een J2SE certificaat. Helaas vinden veel opdrachtgevers het wel een leuk papiertje.

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
CK schreef op 15 October 2003 @ 16:45:
[...]


Euhm enige reden waarom ik arraylist zeg is omdat je dan ook makkelijk aan de hand van een index door je collectie kan springen en niet met een iterator hoef te mieren. That`s all, ArrayList is er om het leven makkelijker te maken. List is de interface en niet de implementatie, ik geef alleen aan dat een arraylist voor de topic starter misschien een makkelijke oplossing is.

Wil nog wel verder toelichten ik ben zelf een array-o-fiel, en doe het boekhouden liever zelf en gebruik vrijwel nooit een list om objecten op te slaan, nasty habbit van mij maar het is zo :)
Leg dan de volgende keer beter uit wat je bedoelt. Het is natuurlijk nogal makkelijk om neer te zetten
Bah List, neem dan een ArrayList
Als je gewoon iets neer had gezet in de Trant van "Als list implementatie kan je het best de ArrayList nemen want ... bla bla bla" dan hebben mensen er nog wat aan.

In dit geval zou ik trouwens niet kiezen voor de ArrayList omde reden dat je hem zelf kan indexeren. In dit geval zou ik gebruik maken van een Queue implementatie ( Ik weet niet uit mijn hoofd of er een standaard implementatie is in java maar dat zal waarschijnlijk wel, anders kan je natuurlijk ook een ArrayList ervoor gebruiken met telkens .add() en getElementAt( 0 ) + removeElementAt( 0 ) )waar je Controller Thread messages kan toevoegen en de Sender Thread messages uit de Queue kan halen volgens het FIFO princiepe. Als elke sender thread dan zijn eigen Queue heeft krijg je ook geen problemen als er een Thread toevallig veel meer CPU time krijgt of via een snellere verbinding verbonden is.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • Robtimus
  • Registratie: November 2002
  • Laatst online: 14:03

Robtimus

me Robtimus no like you

rwb schreef op 15 October 2003 @ 18:02:
In dit geval zou ik trouwens niet kiezen voor de ArrayList omde reden dat je hem zelf kan indexeren. In dit geval zou ik gebruik maken van een Queue implementatie ( Ik weet niet uit mijn hoofd of er een standaard implementatie is in java maar dat zal waarschijnlijk wel, anders kan je natuurlijk ook een ArrayList ervoor gebruiken met telkens .add() en getElementAt( 0 ) + removeElementAt( 0 ) )waar je Controller Thread messages kan toevoegen en de Sender Thread messages uit de Queue kan halen volgens het FIFO princiepe. Als elke sender thread dan zijn eigen Queue heeft krijg je ook geen problemen als er een Thread toevallig veel meer CPU time krijgt of via een snellere verbinding verbonden is.
Er is geen standaard Queue in Java 1.4, wel een Stack (extends Vector). Maar idd, eentje maken is eenvoudig.

Ik heb zelf trouwens ooit een queue implementatie naar Sun gestuurd, maar blijkbaar vonden ze het te simpel om erin te proppen. Maar waarom dan wel een stack vraag ik me af...

More than meets the eye
There is no I in TEAM... but there is ME
system specs


Verwijderd

Topicstarter
hey bedankt allemaal :)

ik heb het ook opgelost met een vector. Daarin sla ik alle threads op, en als ik als thread iets zeg, dan broadcast (eigen funtie met iterator) ik dat naar alle andere threads.

Ik ben nu een enkele weekjes af en toe met java bezig, en ik moet zeggen dat alles makkelijk werkt :)

Het meest kloten van java vind ik in ieder geval de layout.. het geouwehoer met panels, labels en al die andere layout shit... das het meest lastige in mijn ogen... Vooral dat tekenen is een drempel voor beginnende java-programmeurs ...


maargoed.. ik ben weer verder :) bedankt allemaal voor de hulp!

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 14:03

Robtimus

me Robtimus no like you

Verwijderd schreef op 15 October 2003 @ 22:08:
hey bedankt allemaal :)

ik heb het ook opgelost met een vector. Daarin sla ik alle threads op, en als ik als thread iets zeg, dan broadcast (eigen funtie met iterator) ik dat naar alle andere threads.
Java:
1
2
3
4
for (int i = 0; i < vector.size(); i++)
{
    // doe iets met vector.elementAt(i)
}
??
Het meest kloten van java vind ik in ieder geval de layout.. het geouwehoer met panels, labels en al die andere layout shit... das het meest lastige in mijn ogen... Vooral dat tekenen is een drempel voor beginnende java-programmeurs ...
JGoodies Forms (versie 1.0.2 alweer). Nog steeds lastig op het begin, maar makkelijker en krachtiger dan de standaard layouts.

More than meets the eye
There is no I in TEAM... but there is ME
system specs


Verwijderd

Om dan maar te proberen het laatste woord te hebben, Vladimir's code gebruikt een Vector ipv een ArrayList, feitelijk is dat een erg goed idee van werk je met Threads dan moet je je datastructuur beveiligingen tegen (schrijf) operaties die op hetzelfde moment lopen. Of kortgezegd: je moet synchronizen. De oude Vector is synchronized, de nieuwe ArrayList niet.

Het idee om een Vector/ArrayList te gaan gebruiken als afgekapte queue is een beduidend minder elegant idee. Want je moet dan natuurlijk steeds element 0 weggooien, maar dat betekent dus dat die Vector steeds zijn interne array met references zal moet herstructureren. Uiteindelijk is een Queue het beste en mooiste.
Succes!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Verwijderd schreef op 16 October 2003 @ 08:19:
Om dan maar te proberen het laatste woord te hebben, Vladimir's code gebruikt een Vector ipv een ArrayList, feitelijk is dat een erg goed idee van werk je met Threads dan moet je je datastructuur beveiligingen tegen (schrijf) operaties die op hetzelfde moment lopen. Of kortgezegd: je moet synchronizen. De oude Vector is synchronized, de nieuwe ArrayList niet.

Het idee om een Vector/ArrayList te gaan gebruiken als afgekapte queue is een beduidend minder elegant idee. Want je moet dan natuurlijk steeds element 0 weggooien, maar dat betekent dus dat die Vector steeds zijn interne array met references zal moet herstructureren. Uiteindelijk is een Queue het beste en mooiste.
Succes!
Het is inderdaad niet de keus die ik zou maken. Ik heb nog even in de docs gekeken welke Collections er allemaal zijn en het zou de meest logische keus zijn om hier gewoon een LinkedList voor te gebruiken, of anders zelf een Queue class schrijven.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Verwijderd

Topicstarter
IceManX schreef op 15 October 2003 @ 22:23:
[...]
Java:
1
2
3
4
for (int i = 0; i < vector.size(); i++)
{
    // doe iets met vector.elementAt(i)
}
??
[...]
JGoodies Forms (versie 1.0.2 alweer). Nog steeds lastig op het begin, maar makkelijker en krachtiger dan de standaard layouts.
Java:
1
2
3
4
5
Iterator iter = threads.iterator();
while (iter.hasNext()) {
   ThreadedEchoHandler th = (ThreadedEchoHandler) iter.next();
   th.write(string);
}


:)

ik zal ook eens kijken naar die queues :)

is er trouwens een simpel maniertje om de controle te krijgen over de telnet box? ik bedoel met name het kruisje rechtsbovenin? Zodat als iemand daarop klikt, ik een windowclose krijg en ik de usernaam uit de vector kan halen?

  • nxt
  • Registratie: November 2001
  • Laatst online: 12-06 10:00

nxt

Verwijderd schreef op 16 October 2003 @ 09:20:
[...] is er trouwens een simpel maniertje om de controle te krijgen over de telnet box? ik bedoel met name het kruisje rechtsbovenin? Zodat als iemand daarop klikt, ik een windowclose krijg en ik de usernaam uit de vector kan halen?
volgens mij niet,
maar je zou wel een exception moeten krijgen in je server, omdat de socket gesloten wordt.

Verwijderd

Topicstarter
nxt schreef op 16 October 2003 @ 09:30:
[...]

volgens mij niet,
maar je zou wel een exception moeten krijgen in je server, omdat de socket gesloten wordt.
ah ja.
ik kan idd kijken of socket.isClosed = true , en daar kan ik weer mee verder knutselen :)

[x-tra]

ik zat trouwens ook nog te kijken naar de telnetwrapper, maar daar snap ik nog niet echt veel van.. Ik zou namelijk graag zien dat ik de local echo eraf krijg... als ik dus op enter druk, de tekst die ik ingevoerd heb verdwijnt of iets dergelijks...

ik heb nu namelijk:

ik ben hier
[Username] ik ben hier

maar als ik

ik ben hier

heb getypt, wil ik eigenlijk dat dat 'verdwijnt' en er alleen

[Username] ik ben hier

komt te staan :) of is dat te moeilijk ?

[ Voor 44% gewijzigd door Verwijderd op 16-10-2003 09:45 ]


  • Eelke Spaak
  • Registratie: Juni 2001
  • Laatst online: 16-08 19:14

Eelke Spaak

- Vlad -

Verwijderd schreef op 16 October 2003 @ 09:36:
[...]


ah ja.
ik kan idd kijken of socket.isClosed = true , en daar kan ik weer mee verder knutselen :)

[x-tra]

ik zat trouwens ook nog te kijken naar de telnetwrapper, maar daar snap ik nog niet echt veel van.. Ik zou namelijk graag zien dat ik de local echo eraf krijg... als ik dus op enter druk, de tekst die ik ingevoerd heb verdwijnt of iets dergelijks...

ik heb nu namelijk:

ik ben hier
[Username] ik ben hier

maar als ik

ik ben hier

heb getypt, wil ik eigenlijk dat dat 'verdwijnt' en er alleen

[Username] ik ben hier

komt te staan :) of is dat te moeilijk ?
Ja dat kan zeker, maar misschien kan je dat zelf nu implementeren. :P

Je moet alleen kijken of het niet aan de local telnet client ligt. Als die standaard z'n eigen input echo't dan moet je dat dus gewoon uitzetten. Anders is het een kwestie van niet meer "ik ben hier" echo-en naar alle threads, maar alleen de definitieve string.

TheStreme - Share anything with anyone


Verwijderd

Topicstarter
Vladimir G. schreef op 16 October 2003 @ 10:53:
[...]

Ja dat kan zeker, maar misschien kan je dat zelf nu implementeren. :P

Je moet alleen kijken of het niet aan de local telnet client ligt. Als die standaard z'n eigen input echo't dan moet je dat dus gewoon uitzetten. Anders is het een kwestie van niet meer "ik ben hier" echo-en naar alle threads, maar alleen de definitieve string.
Ja, wat ik typ, staat ik mijn eigen telnet box... dat zend ik niet weg.. de andere telnetboxen krijgen alleen de definitieve string te zien. Dus de persoon die wat typt ziet wel telkens wat hij typt, maar de rest krijgt dan alleen de definitieve string.

Ik zal eens kijken hoe ik de local echo af kan zetten..

  • Eelke Spaak
  • Registratie: Juni 2001
  • Laatst online: 16-08 19:14

Eelke Spaak

- Vlad -

Verwijderd schreef op 16 October 2003 @ 10:59:
[...]


Ja, wat ik typ, staat ik mijn eigen telnet box... dat zend ik niet weg.. de andere telnetboxen krijgen alleen de definitieve string te zien. Dus de persoon die wat typt ziet wel telkens wat hij typt, maar de rest krijgt dan alleen de definitieve string.

Ik zal eens kijken hoe ik de local echo af kan zetten..
Volgens mij kan dat niet vanuit de server-kant. Dat is een instelling van de gebruikte telnet-client.

TheStreme - Share anything with anyone

Pagina: 1