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(); // 关闭Socketserver.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 stubreturn null;}}
1 回答

慕斯709654
TA贡献1840条经验 获得超5个赞
socket = server.accept();
你的accept方法重写了,还返回个null ?
BufferedReader is = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
到这不就NullPointerException了
- 1 回答
- 0 关注
- 160 浏览
添加回答
举报
0/150
提交
取消