import java.io.*; import java.net.*; // a JAVA halozati csomagja public class TCPServer { public static void main(String[] args) { if (args.length==1) // egy argumentum kell, a port szama amit figyel { try { int port=Integer.parseInt(args[0]); // portszam kiolvasasa String line; ServerSocket servsock = new ServerSocket(port); // serversocket inicializalasa Socket client = servsock.accept(); // várakozás az 1. kliens csatlakozására System.out.println("Az 1. kliens IP cime: "+client.getInetAddress()+ // infok kiiratasa a kliensrol ", a port: "+(new Integer(client.getPort()))); Socket client2 = servsock.accept(); // várakozás az 2. kliens csatlakozására System.out.println("A kliens IP cime: "+client2.getInetAddress()+ // infok kiiratasa a kliensrol ", a port: "+(new Integer(client2.getPort()))); // az 1. kliens inputstreamje: instream , outputstreamje: outsream, olvasója: cbufread, írója: cprnwrite InputStream instream = client.getInputStream(); // lekerdezzuk a kliens bemeno folyamat BufferedReader cbufread = new BufferedReader(new InputStreamReader(instream)); // raallitunk erre e pufferes olvasot OutputStream outstream = client.getOutputStream(); // lekerdezzuk a kliens kimeno folyamat PrintWriter cprnwrite = new PrintWriter(outstream); // raallitunk egy irot // a 2. kliens inputstreamje: instream2 , outputstreamje: outsream2, olvasója: cbufread2, írója: cprnwrite2 InputStream instream2 = client2.getInputStream(); // lekerdezzuk a kliens bemeno folyamat BufferedReader cbufread2 = new BufferedReader(new InputStreamReader(instream2)); // raallitunk erre e pufferes olvasot OutputStream outstream2 = client2.getOutputStream(); // lekerdezzuk a kliens kimeno folyamat PrintWriter cprnwrite2 = new PrintWriter(outstream2); cprnwrite.println("1"); cprnwrite.flush(); cprnwrite2.println("2"); cprnwrite2.flush(); line = ""; while(true) // végtelen ciklus { if (cbufread.ready()) { // ha van olvasható szó az első klienstől igaz, különben továbbugrunk line = cbufread.readLine(); // beolvasunk egy sort az 1. klienstől cprnwrite2.println(line); // elküldjük a 2. kliensnek cprnwrite2.flush(); // puffer ürítése } if (cbufread2.ready()){ line = cbufread2.readLine(); // beolvasunk egy sort a 2. klienstől cprnwrite.println(line); // elküldjük az 1. kliensnek cprnwrite.flush(); // puffer ürítése } if (line.equals("exit")) break; // ha bejön egy exit utasítás, akkor kilépünk } cbufread.close(); // lezarjuk az olvasokat, irokat, klienseket, szervert cprnwrite.close(); client.close(); cbufread2.close(); cprnwrite2.close(); client2.close(); servsock.close(); } catch (SocketException e) // hibakezeles... { System.out.println("Hiba tortent a sockettel!"); } catch (IOException e) { System.out.println("Hiba tortent a kivitelben/bevitelben!"); } catch (NumberFormatException e) { System.out.println("Hiba tortent a portszam meghatarozasakor (nem egesz szam!)"); } } else // nem megfelelo argumentumszam eseten hasznalati utasitas { System.out.println("Hasznalat: TCPServer port"); } } }