Wenn ich eine Nachricht sende, wird sie nur vom Server ausgedruckt, wenn ich sie in einer Schleife laufe.Socket-Fehler beim Senden/Empfangen
Ich habe versucht, die Nachricht nach 1 Minute zu senden, senden Sie es 50 Mal, aber nichts wird es auf der Serverseite ausdrucken.
Was ist mein Fehler?
Hier ist mein Code, es in Netbeans geschrieben wurde:
package me.jackboyplay.sockets_client;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.concurrent.TimeUnit;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author JackboyPlay
*/
public class Client {
public static void main(String[] args) throws IOException {
Socket socket = null;
try {
socket = new Socket("localhost", 5001);
} catch (IOException ex) {
Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex);
}
if(socket == null){
return;
}
DataInputStream dis = null;
PrintWriter dos = null;
try {
dis = new DataInputStream(socket.getInputStream());
dos = new PrintWriter(socket.getOutputStream());
} catch (IOException ex) {
Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex);
}
int x = 0;
Long l = System.currentTimeMillis() + TimeUnit.SECONDS.toMillis(5);
for(int i = 0; i < 50; i++){
dos.write("X: " + i);
}
}
}
package me.jackboyplay.jc_cloudsystem.mechaniken;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author JackboyPlay
*/
public class SocketClient extends Thread {
private Socket socket;
public SocketClient(Socket socket){
this.socket = socket;
System.out.println("Ein Client wurde akzeptiert.");
}
@Override
public void run() {
BufferedReader br;
PrintWriter pw;
try {
br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
pw = new PrintWriter(socket.getOutputStream());
while(true){
String line = br.readLine();
System.out.println(line);
}
} catch (IOException ex) {
Logger.getLogger(SocketClient.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
Klasse 1 ist der Kunde, der eine Meldung an den Server sendet.
Klasse 2 ist der Server, der die Nachricht ausgibt.
gearbeitet, nachdem ich flush() hinzugefügt habe –