这个问题在这里已经有答案了:
什么是nullpointerexception,如何修复它(12个答案)
上个月关门了。
我在一个简单的客户机/服务器连接上练习。客户端应该向服务器发送一个int,服务器应该打印这个int。但是,服务器遇到nullpointerexception,并且不打印客户端发送的int。
这是我的服务器:
package primitives;
import java.io.DataInputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import bytes.Server;
public class DataServer {
private ServerSocket serverSocket;
private static DataInputStream in;
public DataServer(int port) throws IOException {
serverSocket = new ServerSocket(port);
System.out.println("Server ready at: " + serverSocket);
Socket clientSocket = serverSocket.accept();
System.out.println("New client connection: " + clientSocket);
in = new DataInputStream(clientSocket.getInputStream());
}
public void close() throws IOException {
serverSocket.close();
}
public static void main(String[] args) throws IOException {
Server server = new Server(9000);
int a = DataServer.in.readInt(); // NullPointerException Here
System.out.println(a);
server.close();
System.out.println("closed");
}
}
我的委托人:
package primitives;
import java.io.IOException;
import java.net.Socket;
import java.io.DataOutputStream;
public class DataClient {
private Socket socket;
private DataOutputStream out;
public DataClient(String host, int port) throws IOException {
socket = new Socket(host, port);
System.out.println("Socket ready: " + socket);
out = new DataOutputStream(socket.getOutputStream());
}
public void close() throws IOException {
socket.close();
}
public static void main(String[] args) throws IOException {
DataClient client = new DataClient("127.0.0.1", 9000); // use port configured in the server code
client.out.writeInt(154);
client.out.flush();
client.close();
}
}
谢谢你的帮助。我一直在试图寻找解决方案,但找不到任何,因此,如果有一个解决方案很容易获得或如果这个问题已经提出,我很抱歉。
1条答案
按热度按时间mlnl4t2r1#
使用在构造函数中示例化的静态变量似乎有点无稽之谈。
变量
DataInputStream in
不应该是静态的,应该通过DataServer
例如:此行为确保在使用对象属性之前对其进行示例化。