实现个简单的聊天室
主要的功能服务器端和客户端,服务器一开,客户端之间就可以相互通信,
知道大体的思路,客户端的界面已经写好,大家帮帮我
客户端的界面
import java.awt.event.*;
import javax.swing.*;
public class ChatClient {
public static void main(String[] args) {
JFrame frame=new JFrame( "Chat Client ");
frame.setSize(400,300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JTextArea jta=new JTextArea();
final JTextField jtf=new JTextField();
frame.add(new JScrollPane(jta));
frame.add(jtf, "South ");
jta.setEditable(false);
frame.setVisible(true);
jtf.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
String text=jtf.getText();
jtf.setText( " ");
jta.append(text+ "\n ");
}
});
}
}
------解决方案--------------------这个程序有点小问题,测试了就知道了
//客户端
package chat;
import java.awt.event.*;
import java.io.BufferedReader;
import
java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.
UnknownHostException;
import javax.swing.*;
public class ChatClient {
public static void main(String[] args) {
JFrame frame = new JFrame( "Chat Client ");
frame.setSize(400, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JTextArea jta = new JTextArea();
final JTextField jtf = new JTextField();
frame.add(new JScrollPane(jta));
frame.add(jtf, "South ");
jta.setEditable(false);
frame.setVisible(true);
class ClientThread extends Thread {
public void run() {
Socket s = null;
try {
s = new Socket( "127.0.0.1 ", 9000);
InputStream is = s.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
while (true) {
String str = br.readLine();
jta.append(str + "\n ");
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (
IOException e) {
e.printStackTrace();
} finally {
if (s != null)
try {
s.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
Thread t = new ClientThread();
t.start();
class WriterClient extends Thread {
public void run() {
Socket s = null;
try {
s = new Socket( "127.0.0.1 ", 9000);
OutputStream os = s.getOutputStream();
PrintWriter pw = new PrintWriter(os);
pw.println(jtf.getText());
pw.flush();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (s != null)
try {
s.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
jtf.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
Thread t1 = new WriterClient();
t1.start();
}
});