主要的功能服务器端和客户端,服务器一开,客户端之间就可以相互通信,
知道大体的思路,客户端的界面已经写好,大家帮帮我
客户端的界面
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");
}
});
}
}
知道大体的思路,客户端的界面已经写好,大家帮帮我
客户端的界面
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();
}
}); }
}//服务器
package chat;import java.net.*;
import java.io.*;
import java.util.*;public class Sever {
static List list = new ArrayList(); public static List getList() {
return list;
} public static void main(String[] args) {
try {
ServerSocket ss = new ServerSocket(9000);
while (true) {
Socket s = ss.accept();
list.add(s);
Thread t = new WriterThreadServer(s);
t.start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}/*
class ReaderServerThread extends Thread{
Socket s;
public ReaderServerThread(Socket s){
this.s = s;
}
public void run(){
try {
InputStream is = s.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
OutputStream os = s.getOutputStream();
PrintWriter pw = new PrintWriter(os);
while(true){
String str = br.readLine();
pw.println(str);
pw.flush();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
*/
class WriterThreadServer extends Thread {
Socket ws; List list; public WriterThreadServer(Socket ws) {
this.ws = ws;
} public void run() {
list = Sever.getList(); try {
InputStream is = ws.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr); String str = br.readLine(); Iterator it = list.iterator(); while (it.hasNext()) {
Object o = it.next();
Socket s = (Socket) o; OutputStream os = s.getOutputStream();
PrintWriter pw = new PrintWriter(os); pw.println(str);
pw.flush();
}
} catch (IOException e) {
} finally {
Iterator it = list.iterator(); while (it.hasNext()) {
Object o = it.next();
Socket s = (Socket) o;
try {
s.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}