Ich habe eine Client-Server-Kommunikation auf meinem Mac entwicklet (testhalber), die im Moment nicht mehr machen soll, als byte[] auszutauschen. Der Client steht und macht dies eigentlich auch fleißg mit diesem Code:
Code: Alles auswählen
serverSocket = new Socket("localhost", 13000);
os = serverSocket.getOutputStream();
os.write(stream);
os.flush();
Jedenfalls empfange ich Serverseitig die Anfrage und übergebe sie an einen Thread, der diesen dann abhandelt.
Server:
Code: Alles auswählen
public class SocketServer {
private static Thread t1;
private static ServerSocket serverSocket;
public static void main(String[] args) {
try {
serverSocket = new ServerSocket(13000);
} catch (IOException e1) {
e1.printStackTrace();
}
while(true){
try{
Socket clientSocket = serverSocket.accept();
System.out.println("Request detected");
t1 = new CommInterfaceServer(clientSocket);
t1.run();
}catch(Exception e){}
}
}
}
Code: Alles auswählen
public class CommInterfaceServer extends Thread {
private Socket clientSocket;
private byte[] stream;
public CommInterfaceServer(Socket clientSocket) {
this.clientSocket = clientSocket;
}
public void run() {
try {
InputStream inPut = clientSocket.getInputStream();
if (inPut.available() > 0) {
stream = new byte[inPut.available()];
inPut.read(stream);
System.out.println("there is data -> size: " + stream.length);
} else {
System.out.println("no data, u mad?");
}
clientSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Request detected
no data, u mad?
Request detected
no data, u mad?
Request detected
no data, u mad?
Request detected
there is data -> size: 44
Request detected
no data, u mad?
Request detected
no data, u mad?
Request detected
no data, u mad?
Request detected
no data, u mad?
Request detected
no data, u mad?
Request detected
no data, u mad?
Request detected
there is data -> size: 44
Request detected
no data, u mad?
Request detected
no data, u mad?
Request detected
no data, u mad?
Von all den Anfragen haben es nur zwei geschafft, die Daten korrekt zu übertragen. Woran kann das liegen? Ich dachte TCP-Sockets sind sehr übertragungssicher (anders als UDP). Kennt jemand das Problem oder hat meinen Schnipser schon entdeckt?
Ganz daneben kann der Code ja nicht sein, da immerhin ein paar durchkommen.
Vielen Dank schonmal für die Tipps!