猿问

这个问题怎么解决,具体代码在下面~

package server;
import java.io.*;
import java.net.*;
import javax.swing.JOptionPane;
public class Server { public ServerSocket serversocket = new ServerSocket;
public void start() {
try {
serversocket = new ServerSocket(4444); // 设置服务器端口
} catch (IOException e) {
JOptionPane.showMessageDialog(null, "此端口被占用,系统将退出"); // 端口被占用则无法启动服务器
System.exit(0);
} catch (Exception e) {
e.printStackTrace();
}
}

public static void main(String args[]) { Server server = new Server();
server.start();// 启动服务器
try {
Socket socket = null;
try {
socket = server.accept();
// 使用accept()阻塞等待客户请求,有客户
// 请求到来则产生一个Socket对象,并继续执行
} catch (Exception e) {
System.out.println("Error.\n" + e);
// 出错,打印出错信息
}
String line;
BufferedReader is = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
// 由Socket对象得到输入流,并构造相应的BufferedReader对象
PrintWriter os = new PrintWriter(socket.getOutputStream());
// 由Socket对象得到输出流,并构造PrintWriter对象
BufferedReader sin = new BufferedReader(new InputStreamReader(
System.in));
// 由系统标准输入设备构造BufferedReader对象
System.out.println("Client:" + is.readLine());
// 在标准输出上打印从客户端读入的字符串
line = sin.readLine();
// 从标准输入读入一字符串
while (!line.equals("bye")) {
// 如果该字符串为 "bye",则停止循环
os.println(line);
// 向客户端输出该字符串
os.flush();
// 刷新输出流,使Client马上收到该字符串
System.out.println("Server:" + line);
// 在系统标准输出上打印读入的字符串
System.out.println("Client:" + is.readLine());
// 从Client读入一字符串,并打印到标准输出上
line = sin.readLine();
// 从系统标准输入读入一字符串
}// 继续循环
os.close(); // 关闭Socket输出流
is.close(); // 关闭Socket输入流
socket.close(); // 关闭Socket
server.close(); // 关闭ServerSocket
} catch (Exception e) {
System.out.println("Error:" + e);// 出错,打印出错信息
}
}

private void close() { // TODO Auto-generated method stub

}

private Socket accept() { // TODO Auto-generated method stub
return null;
}
}

牧羊人nacy
浏览 161回答 1
1回答

慕斯709654

socket = server.accept();你的accept方法重写了,还返回个null ?BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream()));到这不就NullPointerException了
随时随地看视频慕课网APP
我要回答