Witam, mam irytujący problem. Napisałem prosty program CLIENT-SERVER i mimo, że wszystko wygląda poprawnie to serwer nie otrzymuje danych. Próbowałem już różnych sposobów.
Najlepiej będzie to widać w kodzie.
SERWER:
package Komunikator;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.io.IOException;
import java.net.Socket;
import java.io.BufferedOutputStream;
import java.io.ObjectOutputStream;
import java.io.BufferedInputStream;
import java.io.ObjectInputStream;
import java.io.EOFException;
import java.net.SocketException;
public class KomunikatorServer extends Thread {
private static void println(String msg) {
System.out.println(msg);
}
private String host = "localhost";
private int port;
public KomunikatorServer(int p) {
this.port = p;
}
@Override
public void run() {
println("SERWER");
try {
InetSocketAddress address = new InetSocketAddress(host, port);
ServerSocket serverSock = new ServerSocket();
serverSock.bind(address);
println("SERWER URUCHOMIONY");
println("CZEKAM NA PODLACZENIE KLIENTA...");
// Przyjmuje polaczenie od klienta.
Socket sock = serverSock.accept();
println("KLIENT PODLACZONY");
BufferedInputStream in = new BufferedInputStream(sock.getInputStream());
BufferedOutputStream out = new BufferedOutputStream(sock.getOutputStream());
//ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(sock.getInputStream()));
//ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(sock.getOutputStream()));
println("TUTAJ");
while(true) {
int count = in.read();
println(""+ count);
/*
try {
buffer = in.readUTF();
} catch(EOFException e) {
println("Wczytany tekst: "+ buffer);
}*/
Thread.sleep(1000);
}
// Zamykam polaczenie z klientem.
//sockClient.close();
//serverSock.close();
} catch(SocketException e) {
println("KLIENT ZERWAL POLACZENIE Z SERWEREM");
} catch(Exception e) {
e.printStackTrace();
}
}
}
KLIENT:
package Komunikator;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.io.BufferedOutputStream;
import java.io.ObjectOutputStream;
import java.io.BufferedInputStream;
import java.io.ObjectInputStream;
import java.net.ConnectException;
import java.io.EOFException;
import java.net.SocketException;
public class KomunikatorClient extends Thread {
private static void println(String msg) {
System.out.println(msg);
}
private String host;
private int port;
public KomunikatorClient(String h, int p) {
this.host = h;
this.port = p;
}
@Override
public void run() {
println("KLIENT");
InetSocketAddress address = new InetSocketAddress(host, port);
Socket sock = new Socket();
try {
sock.connect(address);
println("PODLACZONY DO SERWERA");
BufferedInputStream in = new BufferedInputStream(sock.getInputStream());
BufferedOutputStream out = new BufferedOutputStream(sock.getOutputStream());
//ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(sock.getInputStream()));
//ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(sock.getOutputStream()));
while(true) {
String str = "HELLO!";
out.write(str.getBytes());
println(str);
Thread.sleep(1000);
}
} catch(ConnectException e) {
println("SERWER NIEDOSTEPNY");
} catch(SocketException e) {
println("KLIENT ZERWAL POALCZENIE Z SERWEREM");
} catch(Exception e) {
e.printStackTrace();
}
try {
sock.close();
} catch(Exception e) {
}
}
}
Połączenie jest nawiązywane wysyłam wiadomość ale serwer zatrzymuje się w momencie odbioru danych. Czeka, czeka i nic nie przychodzi. Mimo, że klient wielokrotnie wysyła te dane.
Pomoże ktoś?
Dzięki