请问下面的程序要怎么改,为什么会出现异常?

import java.io.*;
import java.net.*;
import java.util.*;
class FileName implements FilenameFilter
{
String str=null;
FileName (String s)
{
str="."+s;
}
public boolean accept(File dir,String name)
{
return name.endsWith(str);
}
}
public class Server
{
public static void main(String args[])
{
ServerSocket server=null;
Socket you=null;
while(true)
{
try
{
server=new ServerSocket(6666);
}
catch(IOException e1)
{
System.out.println("正在监听");
}
try {
you=server.accept();
InetAddress address=you.getInetAddress();
System.out.println("客户的IP:"+address);

}
catch (IOException e)
{
}
if(you!=null)
{
new Server_thread(you).start();
}
else {
continue;
}
}
}
}


绝地无双
浏览 172回答 2
2回答

浮云间

you=server.accept(); 这句话出的异常原因可能是你启动了2个服务器端,而后虽然你处理了第一个异常,就是IOException e1,就是端口被占用,但程序依然向下执行到you=server.accept(); . 所以抛出 java.lang.NullPointerExceptionat修改方法 : 程序改为while(true){try{server=new ServerSocket(6666);} catch(BindException e){System.out.println("端口使用中");System.out.println("请关掉相关程序并重新运行服务器");System.exit(0);} catch (IOException e) {e.printStackTrace();}

杨魅力

空指针错误,在用server ,you 之前,先判断一下是不是为null;if(you==null) return;if(server==null) return;就不会出现这个错误了
打开App,查看更多内容
随时随地看视频慕课网APP