Mam z tutoriala takie dwie klasy:
Serwer:
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) {
// TODO Auto-generated method stub
try{
ServerSocket myServerSocket = new ServerSocket(999); //stworzenie gniazda servwera i przypisanie mu portu (tu 9999)
// Oczekiwanie na połączenie od hosta
System.out.println("Serwer: Start na hoście-"
+InetAddress.getLocalHost().getCanonicalHostName()
+" port: "+myServerSocket.getLocalPort());
Socket skt = myServerSocket.accept();
//Opcje odczytu i zapisu z i do strumienia
BufferedReader Input = new BufferedReader(new InputStreamReader(skt.getInputStream())); //odczyt
PrintStream Output = new PrintStream(skt.getOutputStream()); //zapis
//Próba odczytania wejścia ze strumienia
String buf = Input.readLine();
//Sprawdzenie, czy serwer odebrał wiadomość i próba odpisania hostowi
if (buf !=null){
System.out.println("Serwer, odczyt: [ "+buf+" ]");
Output.print("Serwer: No siemka!"); //Odpowiedź dla hosta w przypadku odebrania wiadomości
}
// Zamknięcie połączenia ze strony serwera
skt.close();
System.out.println("Serwer - Odłączony");
}
catch (IOException ex){
ex.printStackTrace();
System.out.println("Uuuups, coś się skopało. nie podziałam!");
}
}
}
i Klient:
import java.io.*;
import java.net.*;
public class Klient {
public void main(String[] args){
//Tworzenie gniazda, i sprawdzenie czy host/pory serwera nasłuchuje
String host;
int port;
if(args.length==0){
host= "localhost";
port = 999;
}
else{
host = args[0];
String portStr = args[1];
try {
port=Integer.parseInt(portStr);
}
catch(NumberFormatException nfe){
System.out.println("Uuups, zły numer portu. Przełączam na domyslny port: 9999");
port = 999;
}
}
try{
//Próba połączenia z serwerem
System.out.println("Klient: Próba podłączenia do serwera jako host-"+host+" port: "+port+'.');
Socket skt = new Socket(host,port);
//Opcje odczytu i zapisu z i do strumienia
BufferedReader Input = new BufferedReader(new InputStreamReader(skt.getInputStream())); //odczyt
PrintStream Output = new PrintStream(skt.getOutputStream());
//Przesłanie sprawdzającej wiadomości na serwer:
Output.println("Klient: Siema Heniu!");
//Sprawdzenie, czy serwer odpowiedział.
String buf=Input.readLine();
if(buf !=null){
System.out.println("Klient: Odpowiedź serwera [ "+buf+" ]");
}
else
System.out.println("Klient: Brak odpowiedzi z serwera.");
// Zamknięcie połączenia ze strony klienta
skt.close();
System.out.println("Klient - Odłączony");
}
catch (IOException ex){
ex.printStackTrace();
System.out.println("Uuuups, coś się skopało. nie podziałam!");
}
}
}
Odpalam serwer i działa. Odpalam klienta... i
java.net.BindException: Address already in use: JVM_Bind
at java.net.DualStackPlainSocketImpl.bind0(Native Method)
at java.net.DualStackPlainSocketImpl.socketBind(Unknown Source)
at java.net.AbstractPlainSocketImpl.bind(Unknown Source)
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 Server.main(Server.java:9)
Uuuups, coś się skopało. nie podziałam!
Gościu z tutoriala też ma eclipsa i wszystko mu hula (jedyna różnica, że on ma apple'a). Nie ogarniam dlaczego mnie nie.