我想创建一个简单的聊天程序使用java,它包含窗体,客户端窗体和服务器窗体,客户端窗体包含一个TextField和一个按钮(发送按钮),并且服务器窗体包含一个TextArea。一个简单的客户端/服务器聊天程序
当我单击发送按钮时,它应该将TextField中的写入文本发送到服务器表单中的TextArea。
它第一次工作,但当我第二次点击按钮时,它将无法正常工作。
这是我的服务器形式使用的代码:
public class Server extends javax.swing.JFrame implements Runnable {
private Thread th;
public Server() {
initComponents();
th = new Thread(this);
th.start();
}
// The main method was here
@Override
public void run() {
// Etablir la connexion
try {
ServerSocket ecoute;
ecoute = new ServerSocket(1111);
Socket service = null;
System.out.println("Serveur en attente d'un client !");
while (true) {
service = ecoute.accept();
System.out.println("Client connécté !");
DataInputStream is = new DataInputStream(service.getInputStream());
jTextArea1.setText("Client dit : "+ is.readUTF().toUpperCase());
service.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
,这是客户端形式的代码:
public class Client extends javax.swing.JFrame {
DataOutputStream os;
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
try {
os.writeUTF(jTextField1.getText());
} catch (IOException ex) {
Logger.getLogger(Client.class.getName()).log(Level.SEVERE,null, ex);
}
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
Client c = new Client();
c.setVisible(true);
try {
Socket s = new Socket("localhost", 1111);
c.os = new DataOutputStream(s.getOutputStream());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
}
“*它第一次工作,但当我第二次点击按钮时,它将无法工作。*”。那么会发生什么呢?请明确点。 – Lion 2013-03-03 17:54:57
@Lion什么都没有发生,它什么都做,它看起来像操作事件只有一次 – 2013-03-03 18:01:00
没有例外记录?这似乎很奇怪.. – ddmps 2013-03-03 18:04:12