服务器端:
package com.eesina1;import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.HashMap;
import java.util.Map;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;import com.eesina1.ChatServer;public class ChatServer implements ActionListener,Runnable
{
JTextArea showArea;
JTextField msgText;
JFrame mainJframe;
JButton sentBtn;
JScrollPane JSPane;
JPanel panel;
Container con;
Thread thread = null;
ServerSocket serversocket;
Socket connectToClient;
DataInputStream inFromClient;
DataOutputStream outToClient;

public ChatServer()
{
mainJframe = new JFrame("聊天-服务器端");
con = mainJframe.getContentPane();
showArea = new JTextArea();
showArea.setEditable(false);
showArea.setLineWrap(true);
JSPane = new JScrollPane(showArea);
msgText = new JTextField();
msgText.setColumns(30);
msgText.addActionListener(this);
sentBtn = new JButton("发送");
sentBtn.addActionListener(this);
panel = new JPanel();
panel.setLayout(new FlowLayout());
panel.add(msgText);
panel.add(sentBtn);
con.add(JSPane,BorderLayout.CENTER);
con.add(panel,BorderLayout.SOUTH);
mainJframe.setSize(500,400);
mainJframe.setVisible(true);
mainJframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

try
{

//创建服务套接字
serversocket = new ServerSocket(5500);
showArea.append("正在等待用户请求\n");


//侦听客户端的连接
while (true)
{ connectToClient = serversocket.accept();
System.out.println("侦听到来自客户端的socket" + connectToClient);
inFromClient = new DataInputStream(connectToClient.getInputStream());
outToClient = new DataOutputStream(connectToClient.getOutputStream());

//启动线程在后台来接收对方的消息
thread = new Thread(this);
thread.setPriority(Thread.MIN_PRIORITY);
thread.start();

} } catch (IOException e)
{                                                                                                                                                                                                  
showArea.append("对不起,不能创建服务器\n");
msgText.setEditable(false);
sentBtn.setEnabled(false);
} }
public static void main(String[] args)
{
new ChatServer();


}
//响应按钮事件,发送消息给对方
public void actionPerformed(ActionEvent e)
{
String s = msgText.getText();
if(s.length()>0)
{
try
{
outToClient.writeUTF(s);
System.out.println("服务器发送了消息!");
outToClient.flush();
showArea.append("我说:" + msgText.getText() + "\n");
msgText.setText(null);

} catch (IOException e1)
{
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
//本线程负责将客户机传来的信息显示在对话区域
public void run()
{
while(true)
{
try
{
System.out.println("服务器端准备收信息!");
showArea.append("对方说:" + inFromClient.readUTF() + "\n");
System.out.println("服务器收到了消息!");
thread.sleep(1000);
} catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}}客户端:
package com.eesina1;import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;import com.eesina1.ChatClient;public class ChatClient implements ActionListener,Runnable
{ JTextArea showArea;
JTextField msgText;
JFrame mainJframe;
JButton sentBtn;
JScrollPane JSPane;
JPanel panel;
Container con;
Thread thread = null;
Socket connectToServer;
DataInputStream inFromServer;
DataOutputStream outToServer;

public ChatClient()
{
mainJframe = new JFrame("聊天-客户端");
con = mainJframe.getContentPane();
showArea = new JTextArea();
showArea.setEditable(false);
showArea.setLineWrap(true);
JSPane = new JScrollPane(showArea);
msgText = new JTextField();
msgText.setColumns(30);
msgText.addActionListener(this);
sentBtn = new JButton("发送");
sentBtn.addActionListener(this);
panel = new JPanel();
panel.setLayout(new FlowLayout());
panel.add(msgText);
panel.add(sentBtn);
con.add(JSPane,BorderLayout.CENTER);
con.add(panel,BorderLayout.SOUTH);
mainJframe.setSize(500,400);
mainJframe.setVisible(true);
mainJframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//创建套接字连接到服务器
try
{
connectToServer = new Socket("localhost",5500);

inFromServer = new DataInputStream(connectToServer.getInputStream());
outToServer = new DataOutputStream(connectToServer.getOutputStream());
} catch (UnknownHostException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
} showArea.append("连接成功,请说话\n");
//创建线程在后台处理对方的消息
thread = new Thread(this);
thread.setPriority(Thread.MIN_PRIORITY);
thread.start();
}

public static void main(String[] args)
{
new ChatClient();
}
//响应按钮事件,发送消息给对方
public void actionPerformed(ActionEvent e)
{
String s = msgText.getText();
if(s.length()>0)
{
try
{
System.out.println("客户端准备发消息!");
outToServer.writeUTF(s);
System.out.println("客户端像服务器发出了消息!");
outToServer.flush();
showArea.append("我说:" + msgText.getText() + "\n");
msgText.setText(null);

} catch (IOException e1)
{
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
} public void run()
{
while(true)
{
try
{
showArea.append("对方说:" + inFromServer.readUTF() + "\n");
System.out.println("客户端从服务器收到了消息!");
thread.sleep(1000);
} catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}}
同时开一个服务器端和两个客户端,两个客户端向服务器端发消息,每个客户端都分别只能发一条服务器端能接收到的消息,然后还是可以发送消息,但是服务器端不能接收了。各位大侠帮帮忙啊!