Hallo erst mal,
Ich habe ein Problem beim trennen der Verbindung wenn ich ct.interrupt() ct=(clientThread) aufrufe kommt eine Fehlermeldung besser gesagt immer wieder und wieder.Besser geasgt nach aufruf c.interrupt() beendet er irgendwie nicht die while(!isInterrupted()) oder vielleicht liegt es wo ander keine ahnung
Es sind 3 Klassen
1.Klasse clientThread:
2.Klasse Echo-Server:
3.Klasse ClientGUI:
Ich habe ein Problem beim trennen der Verbindung wenn ich ct.interrupt() ct=(clientThread) aufrufe kommt eine Fehlermeldung besser gesagt immer wieder und wieder.Besser geasgt nach aufruf c.interrupt() beendet er irgendwie nicht die while(!isInterrupted()) oder vielleicht liegt es wo ander keine ahnung
Es sind 3 Klassen
1.Klasse clientThread:
Java:
public class ClientThread extends Thread {
private BufferedReader br;
private JTextArea taAUsgabe;
public ClientThread(BufferedReader br, JTextArea taAUsgabe) {
this.br = br;
this.taAUsgabe = taAUsgabe;
}
@Override
public void run() {
while (!this.isInterrupted()) {
try {
String zeile = br.readLine();
taAUsgabe.append(zeile+System.getProperty("line.separator"));
}
catch (SocketTimeoutException ex)
{
System.out.println("readtime out");
}
catch (IOException ex)
{
// break;
JOptionPane.showMessageDialog(null,ex.getMessage() );
}
}
}
}
2.Klasse Echo-Server:
Java:
public class EchoServer {
private int port;
public EchoServer(int port) {
this.port = port;
}
public void start() {
try {
ServerSocket server = new ServerSocket(port);
System.out.println("server started on port: " + port + "...");
Socket socket = server.accept();
System.out.println("Connected to: "+socket.getRemoteSocketAddress());
OutputStream os = socket.getOutputStream();
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
InputStream is = socket.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
while (true)
{
String zeile=br.readLine();
if(zeile.equals("the end"))
{
break;
}
bw.write(zeile);
bw.newLine();
bw.flush();
System.out.println("Data exchange performed");
}
} catch (IOException ex) {
System.out.println(ex.getMessage());
}
}
public static void main(String[] args) {
EchoServer es = new EchoServer(1337);
es.start();
}
}
3.Klasse ClientGUI:
Java:
public class ClientGui extends javax.swing.JFrame {
private Socket socket;
private int port=1337;
private BufferedWriter bw ;
private BufferedReader br;
ClientThread ct;
/** Creates new form ClientGui */
public ClientGui() {
initComponents();
this.setLocationRelativeTo(null);
}
private void onVerbinden(java.awt.event.ActionEvent evt) {
try {
InetAddress addr =InetAddress.getByName("localhost");
try {
socket = new Socket(addr, port);
socket.setSoTimeout(500);
OutputStream os = socket.getOutputStream();
bw = new BufferedWriter(new OutputStreamWriter(os));
InputStream is = socket.getInputStream();
br = new BufferedReader(new InputStreamReader(is));
ct = new ClientThread(br, jTAntwort);
ct.start();
btSenden.setEnabled(true);
btTrennen.setEnabled(true);
btVerbinden.setEnabled(false);
} catch (IOException ex) {
JOptionPane.showMessageDialog(null,"connection to server failed!!!" );
}
} catch (UnknownHostException ex) {
JOptionPane.showMessageDialog(null,"Unknown Host!!!" );
}
}
private void onSenden(java.awt.event.ActionEvent evt) {
try
{
String text=jTEingabe.getText();
if(!text.equals(""))
{
bw.write(text);
bw.newLine();
bw.flush();
}
}
catch(Exception ex )
{
JOptionPane.showMessageDialog(null,"Send to Server failed!!!" );
}
}
private void onTrennen(java.awt.event.ActionEvent evt) {
try {
// TODO add your handling code here:
bw.write("the end");
bw.newLine();
bw.flush();
ct.interrupt();
socket.close();
btSenden.setEnabled(false);
btTrennen.setEnabled(false);
btVerbinden.setEnabled(true);
} catch (IOException ex) {
}
}
Zuletzt bearbeitet: