【发布时间】:2016-04-01 01:28:37
【问题描述】:
我想做一个基于 telnet 的多线程 ChatServer,我以为我明白了,但是在我在 telnet 中输入 1 条消息后,它给出了以下错误
“线程“Thread-0”中的异常 java.lang.NullPointerException
在 Server.sendAll(Server.java:20)
在 ServerThreads.run(ServerThreads.java:33)"
我知道问题出在哪里,但我不知道如何在我的代码中专门解决它。我认为所有其他的东西都工作正常。 这是我的 ServerThread 类
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerThreads extends Thread {
private String prefix;
private Socket socket;
PrintWriter pw;
public ServerThreads(String prefix, Socket s){
this.prefix = prefix;
this.socket = s;
this.start();
}
public void run(){
try {
PrintWriter pw = new PrintWriter(socket.getOutputStream(),true);
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
Server.list.einfuegen(0, this);
pw.println("Client verbunden mit: "+prefix);
while(true){
//System.out.println("User: "+ socket.getInetAddress() + " Nachricht: " + line);
String line = br.readLine();
Server.sendAll(line, prefix);
pw.flush();
}
}catch (IOException e){
e.printStackTrace();
}
}
}
这是我的服务器类
import java.io.IOException;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
static EinfachListe list = new EinfachListe();
static int zaehler = 1;
private int port;
ServerSocket socket;
public Server(int port) throws IOException{
this.port = port;
socket = new ServerSocket(port);
}
static public void sendAll(String s, String prefix){
for(int a = 0; a<list.getAnzahl(); a++){
((ServerThreads) (list.get(a))).pw.println(s);
}
}
public void starteServer(){
System.out.println("Der Server wurde gestartet");
while(true){
try {
Socket s = socket.accept();
//ServerThreads user = new ServerThreads("User:Anzahl Nachrichten "+zaehler++, 1000, s);
String client = "Client"+zaehler++;
new ServerThreads(client, s);
//user.start();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
我不认为我的 LinkedList 有错误,但如果你认为是,我也可以在这里复制我的 LinkedList 的代码。感谢您的帮助!
【问题讨论】:
标签: java multithreading telnet