public static void main(String[] args) { final int port = 800; //porten vi vil lytte på.
System.out.println("[server] Starter echo server på port "+port);
ServerSocket srv = null; try { srv = new ServerSocket(port); } catch (BindException be) { System.out.println("[server] Kunne ikke lytte på "+port); System.exit(1); } catch (IOException e) { System.out.println("[server] Kunne ikke åbne server-socket"); e.printStackTrace(); System.exit(1); }
Socket sock = null; try { while ((sock = srv.accept()) != null) { InetAddress remoteHost = sock.getInetAddress(); int remotePort = sock.getPort(); System.out.println("[server] Accepterede forbindelse fra "+ remoteHost.getHostAddress()+ ":"+remotePort);
InputStream in = sock.getInputStream(); //Stream til indkommende data OutputStream out = sock.getOutputStream(); //Stream til udgående data
byte[] buffer = new byte[16384]; //16kb buffer while (true) { /* InputStream's read(byte[], int, int) metode returnerer enten: Antallet af læste tegn -1, hvis der ikke kunne læses data (Hvis slutningen af streamen er nået). */ int read = in.read(buffer, 0, buffer.length); //læs op til MAX_SIZE tegn.
if (read == -1) break; //echo ikke hvis der ikke kunne læses data
out.write(buffer, 0, read); //skriv tegn tilbage til klienten } System.out.println("[server] Forbindelse afbrudt.."); } } catch (IOException e) { System.out.println("[server] Fejl: Input/Output fejl"); e.printStackTrace(); System.exit(1); } } }
dette er min kildekode..
lige meget hvilken port jeg prøver at lytte på.. kan jeg ikke lytte på den.. hvorfor?
[server] Starter echo server på port 10000 java.net.BindException: Address already in use: JVM_Bind at java.net.PlainSocketImpl.socketBind(Native Method) at java.net.PlainSocketImpl.bind(Unknown Source) at java.net.ServerSocket.bind(Unknown Source) at java.net.ServerSocket.<init>(Unknown Source) at java.net.ServerSocket.<init>(Unknown Source) at EchoServer.main(EchoServer.java:19)
det er med denne kode (den rettede med dit ofrslag):
InputStream in = sock.getInputStream(); //Stream til indkommende data OutputStream out = sock.getOutputStream(); //Stream til udgående data
byte[] buffer = new byte[16384]; //16kb buffer while (true) { /* InputStream's read(byte[], int, int) metode returnerer enten: Antallet af læste tegn -1, hvis der ikke kunne læses data (Hvis slutningen af streamen er nået). */ int read = in.read(buffer, 0, buffer.length); //læs op til MAX_SIZE tegn.
if (read == -1) break; //echo ikke hvis der ikke kunne læses data
out.write(buffer, 0, read); //skriv tegn tilbage til klienten } System.out.println("[server] Forbindelse afbrudt.."); } } catch (IOException e) { System.out.println("[server] Fejl: Input/Output fejl"); e.printStackTrace(); System.exit(1); } } }
jeg kører den i eclipse (da min command consol automatisk lukker ned direkte efter start)--... AAAH!.. har lige fundet ud af at jeg glemte at "terminate" programmet i eclipse... troede at den selv gjorde det..!..
forrestsen!..har også en client del, kan jeg bare køre den i eclipse bagefter?.. og så burde den kunne læse ?
JAAAA :D.. det virker.. takker.. forrestn.. kan du fortælle mig hvorfor at min cmd lukker igen lige så snart jeg går i "kør -> 'cmd'"?.. det er rigtig irriterende
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.