Mam problem z serwerem - napisałem klienta i serwer które łączą się za
pomocą strumieni ObjectInput / Output stream. komunikacja jest poprzez
zserializowany obiekt msg.
Problem jest następujący jak chce uruchomić komunikacje to nie tworzą
się te strumienie a np. gdy zakomentuje tworzenie jednego ze strumieni
na serwerze to jest wszystko OK.
dlaczego tak jest?
poniżej wkleje źródła:
Serwer
import java.io.;
import java.net.;
import java.io.Serializable;
import java.lang.Thread.*;
public class serwer extends Thread {
ObjectOutputStream wyjscie;
Socket gniazdo;
ObjectInputStream wejscie;
public serwer() throws IOException {
}
public void run() {
try {
ServerSocket server = new ServerSocket(4747);
System.out.println("This server runs on port " +
server.getLocalPort());
gniazdo = server.accept();
System.out.println("Zaakceptowano polaczenie");
wejscie = new ObjectInputStream(gniazdo.getInputStream());
wyjscie = new ObjectOutputStream(gniazdo.getOutputStream());
System.out.println("Utworzono strumienie");
// wyjscie.writeUTF("Wysy");
//wyjscie.writeInt(11);
Message msg = new Message("toja");
System.out.println(msg.msg);
synchronized(wyjscie){
wyjscie.writeInt(1);
wyjscie.flush();
wyjscie.writeObject(msg);
wyjscie.flush();
wyjscie.writeInt(0);
wyjscie.flush();
System.out.println(" Odczytana liczba to:
"+wejscie.readInt());
try{
Thread.sleep(3000);
}
catch(Exception e){}
}
// Główna pętla odbierająca
while (true) {
}
} catch (IOException ex) {
System.err.println(ex);
}
}
public static void main(String[] args) {
try {
Thread t = new serwer();
t.start();
} catch (IOException e) {
e.printStackTrace();
}
}
}
klient:
import java.net.;
import java.io.;
import java.io.Serializable;
import java.lang.Thread.*;
public class klient {
public static void main(String[] args) {
Socket gniazdo;
String hostname = "localhost";
ObjectInputStream wejscie;
ObjectOutputStream wyjscie;
try {
gniazdo = new Socket(hostname, 4747);
wejscie = new ObjectInputStream(gniazdo.getInputStream());
wyjscie = new ObjectOutputStream(gniazdo.getOutputStream());
while (true){
synchronized(wejscie){
int liczba = wejscie.readInt();
System.out.println(liczba);
switch(liczba){
case 0:
continue;
case 1:
try {
Message msg = (Message) wejscie.readObject();
String wiad = msg.msg;
System.out.println(wiad);
msg = null;
liczba = 0;
wyjscie.writeInt(5);
wyjscie.flush();
break;
}
catch (Exception e) {}
}
}//end of synchronized
}}// end try
catch (UnknownHostException ex) {
System.err.println(ex);
} catch (IOException ex) {
System.err.println(ex);
}
}
}
klasa Message msg:
import java.io.*;
class Message implements Serializable {
String nadawca;
String odbiorca;
String msg;
public Message(String msg){
super();
this.msg = msg;
}
}
--
pencom