/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Søger et eksempel på socket kommunikation ~
Fra : Finn Fix


Dato : 23-11-00 15:04

Hej !

Jeg søger et eksempel på trådet socket prgrammering. Jeg kan godt finde ud
af at køre socket kommunikation på localhost, hvor man både har klient og
server på samme maskine. Nu vil jeg så gerne køre denne kommunikation i en
tråd, så der kan blive mulighed for at have flere klienter kørende
samtidigt. Er der nogen der kan hjælpe ?

På forhånd tak !

Finn



 
 
Carsten Jakobsen (23-11-2000)
Kommentar
Fra : Carsten Jakobsen


Dato : 23-11-00 15:56

Hvis du allerede har en server kørende (med en ServerSocket), så er det da
bare at spawne en ny thread for hver accept(), der kommer ind. Den spawnede
thread skal så blot "tage sig af" at læse request og sende response til
klienten.

Altså noget med at lave følgende i serveren:

while (! serverTerminated)
{
try
{
Socket client = listen.accept();
clientThread = new ClientThread(client);
}catch(A_lot_of_IO_exceptions ex) { }
}

Husk: Det er kun serverens håndtering af klienter der skal foregå i threads,
selve lytte-posten kan godt være "hovedprogrammet" selv.

MVH Carsten


"Finn Fix" <120100750227@esenet.dk> wrote in message
news:8vj86p$gin$1@news.inet.tele.dk...
> Hej !
>
> Jeg søger et eksempel på trådet socket prgrammering. Jeg kan godt finde ud
> af at køre socket kommunikation på localhost, hvor man både har klient og
> server på samme maskine. Nu vil jeg så gerne køre denne kommunikation i en
> tråd, så der kan blive mulighed for at have flere klienter kørende
> samtidigt. Er der nogen der kan hjælpe ?
>
> På forhånd tak !
>
> Finn
>
>



Morten Jensen (23-11-2000)
Kommentar
Fra : Morten Jensen


Dato : 23-11-00 15:57

Finn Fix wrote:
>
> Hej !
>
> Jeg søger et eksempel på trådet socket prgrammering. Jeg kan godt finde ud
> af at køre socket kommunikation på localhost, hvor man både har klient og
> server på samme maskine. Nu vil jeg så gerne køre denne kommunikation i en
> tråd, så der kan blive mulighed for at have flere klienter kørende
> samtidigt. Er der nogen der kan hjælpe ?

Her er et eksempel på en multithreaded server, som blot returnerer alt
hvad du skriver til den.

Start den f.eks. på port 5000 på denne måde:

java EchoServer 5000


import java.net.*;
import java.io.*;

public class EchoServer extends Thread
{
Socket s = null;

public EchoServer(Socket s)
{
this.s = s;
}

public void run()
{
try
{
InputStream in = s.getInputStream();
OutputStream out = s.getOutputStream();

int bytein = -1;
while((bytein = in.read()) != -1)
{
out.write(bytein);
out.flush();
}
out.close();
System.out.println("Connection closed from "+
s.getInetAddress().getHostAddress());
}
catch(IOException ioe)
{
System.out.println("IOException:\n"+ioe);
}
}

public static void main(String[] args)
{
int port = Integer.parseInt(args[0]);
try
{
ServerSocket ss = new ServerSocket(port);
while(true)
{
System.out.println("Listening on port "+port);
Socket s = ss.accept();
System.out.println("Incoming connection from "+
s.getInetAddress().getHostAddress());
EchoServer es = new EchoServer(s);
es.start();
}
}
catch(IOException ioe)
{
System.out.println("Error listening on port "+
port+".\n"+ioe);
}
}
}

--
CAPUT A/S Morten Jensen Phone +45 70 12 24 42
Nygade 6 Senior Developer Fax +45 70 11 24 42
DK-1164 Kbh K jensen@caput.com http://www.caput.com

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste