【发布时间】:2018-04-08 02:01:00
【问题描述】:
我正在实现一个服务器/客户端程序。我需要在服务器中创建多个线程来处理来自客户端的消息。编译代码的时候出现错误
Exception in thread "Thread-1" java.lang.NullPointerException
at server.run(Program.java:59)
第 59 行是
BufferedReader inFromClient = new BufferedReader(new
InputStreamReader(sSock.getInputStream()));
用于从客户端读取消息。
我的程序代码是:
class Program {
public static void main(String[] args) throws UnknownHostException, IOException{
// Program runs as a Server
if(args.length == 2) {
String host = args[0];
int port = Integer.parseInt(args[1]);
String fileName = "serverFile";
ServerSocket sSock = null;
// Open a server socket.
try {
sSock = new ServerSocket(port);
}catch(Exception e) {
System.out.println("Error: cannot open server socket");
System.exit(1); // Handle exceptions.
}
System.out.println("Server is listening on port " + port);
while(true) {
new server(sSock.accept(), fileName).start();
}
}
}
}
class server extends Thread {
// Thread t = Thread.currentThread();
Socket sSock = null;
String fileName = null;
server(Socket sScok,String fileName) {
this.sSock = sSock;
this.fileName = fileName;
}
@Override
public void run() {
try {
BufferedReader inFromClient = new BufferedReader(new
InputStreamReader(sSock.getInputStream()));
PrintWriter sendOut = new PrintWriter(sSock.getOutputStream(),
true);
String s = inFromClient.readLine();
System.out.println("receive string " + s + "from client");
sendOut.println("send Ack to you");
}catch (IOException e) {
System.out.println("Error: " + e);
}
}
}
我已经挣扎了很长时间......有人可以提供帮助会很棒。
【问题讨论】:
-
您的
server构造函数有一个名为sScok的参数,它从未使用过。你的意思是sSock?此外,类名应以大写字母开头。
标签: java multithreading nullpointerexception bufferedreader serversocket