网络边接服务器端出错
//惟一的问题是将客户端的dos窗口关闭(右上角的叉号),而不是通过程序中指定的关闭方式时,服务器端抛出异常.
不知哪位高手能给出解决办法
//此程序与TCPClient.java配合使用,实现客户端与服务端会话(一人一句,不可错乱)
//bug: 当客户端异常关闭(直接关闭窗口)时,服务端抛出异常
import java.net.*;
import java.io.*;
public class TCPServer{
public static void main(String [] args) throws Exception{
ServerSocket ss = new ServerSocket(6669);
Socket s =null;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
DataInputStream dis=null;
DataOutputStream dos=null;
String attention ="你有话就说!!!....\n 注意: 若不愿说,那就输入\"exit\",一拍两散";
while(true){
s = ss.accept();
System.out.println( "server: connect client.... ");
System.out.println("I said: "+attention);
//向客户端写入数据,提示客户端联上了就别傻愣着,找点话说
dos = new DataOutputStream(s.getOutputStream());
dos.writeUTF(attention);
//获得客户端的输入流
dis = new DataInputStream(s.getInputStream());
String tempStr=null;
String temp2=null;
//判断如果客户端输入exit则退出循环,断开连接
while(!(tempStr=dis.readUTF()).trim().equalsIgnoreCase("exit")){
//从客户端读取数据并写到自已一端的屏上
System.out.println( "client: "+ tempStr);
//向客户端写入
temp2=br.readLine();
dos.writeUTF( temp2);
System.out.println("I said: "+temp2);
dos.flush();
}
if(dis!=null)
dis.close();
if(dos!=null)
dos.close();
dis=null;
dos=null;
if(s!=null)
s.close();
}
}
}
//此程序与TCPServer.java配合使用,实现客户端与服务端会话(一人一句,不可错乱)
import java.net.*;
import java.io.*;
public class TCPClient {
public static void main(String [] args) throws Exception{
Socket s = new Socket("127.0.0.1",6669);//服务器端的端口,
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
OutputStream os =s.getOutputStream ();
DataOutputStream dos = new DataOutputStream(os);
DataInputStream dis= dis = new DataInputStream(s.getInputStream());
String tempStr=null;
//从服务器端读入一行数据,并在己方屏幕上显示
System.out.println("server: "+dis.readUTF());
while(!(tempStr=br.readLine()) .equals("exit")){//当客户端(此端)输入exit时跃出循环
//向服务端写入数据,此数据从屏幕读取
dos.writeUTF(tempStr);
System.out.println("I said :"+tempStr);
dos.flush();
//将服务器端的数据写到己方屏幕上
System.out.println("server: "+dis.readUTF());
}
//如果客户端(此端)输入了exit则向server端输出exit
dos.writeUTF("exit");
if(dis!=null)
dis.close();
if(dos!=null)
dos.close();
dis=null;
dos=null;
if(s!=null)
s.close();
}
}
------解决方案--------------------