BufferedReader 线程 "Thread-1" java.lang.NullPointerException 中的异常
Exception in thread "Thread-1" java.lang.NullPointerException with BufferedReader
我正在实施 server/client 计划。我需要在服务器中创建多个线程来处理来自客户端的消息。当我编译代码时,出现错误
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);
}
}
}
纠结了好久...有人帮忙就好了。
您还没有启动 sSock
所以 sSock.getInputStream()
抛出异常。 main 方法中的 sSock = new ServerSocket(port);
行启动了一个 与 server
class.[=15 中的变量 sSock
不同的 变量=]
Socket sSock = null;
开始,永远不会更新
在你的构造函数中你有
server(Socket sScok,String fileName) {
this.sSock = sSock;
输入的是sScok
而不是sSock
,看起来是打错了,但是对你的代码影响很大
修正打字错误,server(Socket sSock, String fileName) {
应该可以解决问题
我正在实施 server/client 计划。我需要在服务器中创建多个线程来处理来自客户端的消息。当我编译代码时,出现错误
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);
}
}
}
纠结了好久...有人帮忙就好了。
您还没有启动 sSock
所以 sSock.getInputStream()
抛出异常。 main 方法中的 sSock = new ServerSocket(port);
行启动了一个 与 server
class.[=15 中的变量 sSock
不同的 变量=]
Socket sSock = null;
开始,永远不会更新
在你的构造函数中你有
server(Socket sScok,String fileName) {
this.sSock = sSock;
输入的是sScok
而不是sSock
,看起来是打错了,但是对你的代码影响很大
修正打字错误,server(Socket sSock, String fileName) {
应该可以解决问题