Java 插座一团糟
我关于套接字的代码分为三个类,我已经研究了它(并学习了socketapi)几个小时了,现在只剩下一个bug(我可以看到)。从服务器收到的消息将不会打印,而是抛出此错误 线程“thread-14”java.lang.NullPointerException中出现异常 main.Listen.run(Listen.java:11)java.lang.Thread.run(未知源代码) 控制台类Java 插座一团糟,java,sockets,networking,Java,Sockets,Networking,我关于套接字的代码分为三个类,我已经研究了它(并学习了socketapi)几个小时了,现在只剩下一个bug(我可以看到)。从服务器收到的消息将不会打印,而是抛出此错误 线程“thread-14”java.lang.NullPointerException中出现异常 main.Listen.run(Listen.java:11)java.lang.Thread.run(未知源代码) 控制台类 package main; public class Console extends Handle {
package main;
public class Console extends Handle {
String nextl = System.getProperty("line.separator");
String info = "[INFO] ";
String ser = "[SERVER] ";
String err = "[ERROR] ";
String name = "[" + userName + "] ";
public void log() {
startupCon();
Network network = new Network();
int allgood = network.connect();
if (allgood == 34) {
Listen listen = new Listen();
new Thread(listen).start();
}
}
void startupCon() {
System.out.println("===========");
System.out.println("=+CONSOLE+=");
System.out.println("===========" + nextl);
}
void networkCon(String net) {
System.out.println(net);
}
}
网络类:
package main;
import java.net.*;
import java.io.*;
public class Network extends Console {
int port = 7771;
String host = "localhost";
Socket client;
OutputStream outToServer;
DataOutputStream out;
InputStream inFromServer;
DataInputStream in;
public int connect() {
int getOpen = open();
System.out.println(getOpen);
int getStream = trans(getOpen);
System.out.println(getStream);
return getStream;
}
int open() {
try {
networkCon(info + "Attemping to connect to /" + host + ":" + port);
client = new Socket(host, port);
System.out.println(info + "Established connection with "
+ client.getRemoteSocketAddress());
return 42;
} catch (SocketTimeoutException s) {
networkCon(err + "Socket timed out!");
return 9;
} catch (IOException e) {
System.out.println(err + "Could not connect to /" + host + ":"
+ port);
return 9;
}
}
int trans(int hostup) {
if (hostup == 42) {
try {
outToServer = client.getOutputStream();
out = new DataOutputStream(outToServer);
inFromServer = client.getInputStream();
in = new DataInputStream(inFromServer);
return 34;
} catch (SocketTimeoutException s) {
networkCon(err + "Socket timed out!");
return 8;
} catch (IOException e) {
System.out.println(err + "Connection lost!");
return 8;
}
}
return 7;
}
}
倾听课堂(我生存的祸根)
我猜流在类Listen中没有被设置为变量“in”,但我不知道这是否是问题所在,也不知道如何解决它。你没有调用
网络类的connect()
方法。。这就是
中的数据输入流从未初始化的原因。。在您的程序中,它总是null
我想您应该在Listen
类中定义一个构造函数,在该类中调用超类Network
的connect
方法,如下所示:
public Listen()
{
connect();
}
您还没有调用Network
类的connect()
方法。。这就是
中的数据输入流从未初始化的原因。。在您的程序中,它总是null
我想您应该在Listen
类中定义一个构造函数,在该类中调用超类Network
的connect
方法,如下所示:
public Listen()
{
connect();
}
正如您猜测的那样,
中的在侦听中为空。请注意,空指针带有一个行号。啊,ty,是时候弄清楚如何正确获取值了。
中的在中是空的,就像您猜的那样。请注意,NullPointer带有一个行号。啊,ty,是时候弄清楚如何正确获取值了…@DrZarreh为什么?你怎么能这么说?你在别的地方叫过吗?你构造了多少次倾听的对象?@DrZarreh为什么?你怎么能这么说?你在别的地方叫过吗?你构造了多少次倾听的对象?