“线程中的异常”;螺纹-1“;带BufferedReader的java.lang.NullPointerException
我正在实现一个服务器/客户端程序。我需要在服务器中创建多个线程来处理来自客户端的消息。当我编译代码时,出现了一个错误“线程中的异常”;螺纹-1“;带BufferedReader的java.lang.NullPointerException,java,multithreading,nullpointerexception,bufferedreader,serversocket,Java,Multithreading,Nullpointerexception,Bufferedreader,Serversocket,我正在实现一个服务器/客户端程序。我需要在服务器中创建多个线程来处理来自客户端的消息。当我编译代码时,出现了一个错误 Exception in thread "Thread-1" java.lang.NullPointerException at server.run(Program.java:59) 第59行是 BufferedReader inFromClient = new BufferedReader(new InputStreamReader(sS
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()
引发异常。sSock=newserversocket(端口)主方法中的代码>行启动一个名为sSock
的变量,该变量与server
类中的变量不同。您尚未启动sSock
,因此sSock.getInputStream()
引发异常。sSock=newserversocket(端口)行启动一个名为sSock
的变量,该变量与服务器
类中的变量不同。套接字sSock=null代码>开始,并且从不更新
在你的构造函数中,你有
server(Socket sScok,String fileName) {
this.sSock = sSock;
输入是sScok
,而不是sSock
,看起来像是打字错误,但对代码有很大影响
修正输入错误,server(Socket-sSock,String-fileName){
应该做的就是开始时使用Socket-sSock=null;
,并且永远不会更新
在你的构造函数中,你有
server(Socket sScok,String fileName) {
this.sSock = sSock;
输入是sScok
,而不是sSock
,看起来像是打字错误,但对代码有很大影响
正在修复服务器的输入错误(Socket-sSock,字符串文件名){
应该可以做到这一点你的服务器
构造函数有一个名为sScok
的参数,从未使用过。你是说它是sSock
?另外,类名应该以大写字母开头。你的服务器
构造函数有一个名为sScok
的参数,从未使用过。你是指它吗sSock
?此外,类名应以大写字母开头。非常感谢!是的!打字错误导致编译错误。我不允许在收到您的答案后的前3分钟内标记此错误。我现在标记它。谢谢。非常感谢!是的!打字错误导致编译错误。它不允许我在f中标记此错误收到您的答案后的第一个3分钟。我现在标记它。谢谢。