服务器程序import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.EOFException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.BindException;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketException;
import java.util.ArrayList;
import java.util.List;
public class ChatServerTest {
ServerSocket ss = null;
Socket client = null;
DataInputStream din = null;
DataOutputStream dou=null;
List<Client> lists = new ArrayList<Client>();
public ChatServerTest(){

try {
ss = new ServerSocket(10000);
int n=1;
while(true){
client=ss.accept();
System.out.println(n+"台客户机连接到服务器上");
n++;
OutputStream out = client.getOutputStream();
dou=new DataOutputStream(out);
dou.writeUTF("你好");
Client c1 = new Client(client);
new Thread(c1).start();
//加入列表
lists.add(c1);

}
} catch (BindException e) {
System.out.println("已经有一台服务器正在运行 请不要再次启动服务器");
System.exit(-1); } catch(EOFException e){
System.out.println("读完了");
}
catch(SocketException e){
System.out.println("客户退出了");
}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
try {
if (client != null) {
client.close();
client = null;
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
if (ss != null) {
ss.close();
ss = null; }
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} public static void main(String[] args) {
new ChatServerTest();
}
private class Client implements Runnable {
private Socket s = null;
private DataInputStream din = null;
private DataOutputStream dout = null;
private boolean bConnected = false; public Client(Socket s) {
bConnected = true;
this.s = s;
try {
din = new DataInputStream(s.getInputStream());
dout = new DataOutputStream(s.getOutputStream());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//发送方法
public void send(String line){
try {
dout.writeUTF(line);
dout.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void run() { try {
while (bConnected) {
String line = din.readUTF();// 循环读写
System.out.println(lists.size());
                    for(int i = 0 ; i < lists.size();i++){
                     Client  c = (Client)lists.get(i);
    c.send(line);
                    }
}
} catch (EOFException e) {
System.out.println("客户退出了");
                lists.remove(this);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
if(s != null){
s.close();
s = null;
}
if(din != null){
din.close();
din = null;
}
if(dout != null){
dout.close();
dout = null;
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

} } }
}程序有些没有完全写完 现在一运行 就出现
java.net.SocketException: socket closed
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(Unknown Source)
at java.net.SocketInputStream.read(Unknown Source)
at java.io.DataInputStream.readUnsignedShort(Unknown Source)
at java.io.DataInputStream.readUTF(Unknown Source)
at java.io.DataInputStream.readUTF(Unknown Source)
at chatRoom.ChatClientText$RecvThread.run(ChatClientText.java:307)
at java.lang.Thread.run(Unknown Source)请高手帮指点一下 谢谢
第一次发帖 不知道 有没有描述清楚 麻烦大家了~:-)