我试图创建一个可以存储在数组中的线程的类,这将使我更容易处理从客户端到服务器的用户输入。
这是我的PongPlayerThread
package Pong;
import java.net.*;
import java.io.*;
public class PongPlayerThread extends Thread
{
private Socket socket = null;
private String pongData = "";
public PongPlayerThread()
{
//clear
}
public PongPlayerThread(Socket socket, int id, String data)
{
//super("PongPlayerThread");
pongData = data;
this.socket = socket;
}
public void passData(String data)
{
pongData = data;
}
public void run()
{
try
{
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
while(true)
{
out.println(pongData);
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
现在在我的服务器上的这一行,客户端可以连接
players[0] = new PongPlayerThread(serverSocket.accept(), 0, rtnInfo()).start();
我收到此错误 “无法从void转换为PongPlayerThread”为什么会这样?我已经搜索了但是当你的类名出错时很难。
我现在有了这段代码
players[idPlayer] = new PongPlayerThread(serverSocket.accept(), idPlayer, rtnInfo());
players[idPlayer].start();
但是当客户端连接时我得到了这个错误 傍 400.0:301.0:60.0:300.0:740.0:300.0 服务器启动了 服务器已设置并将尝试创建套接字 线程“main”java.lang.NullPointerException中的异常 在Pong.PongServer.main(PongServer.java:82)
它指向的线是 players [idPlayer] = new PongPlayerThread(serverSocket.accept(),idPlayer,rtnInfo()); ???
答案 0 :(得分:5)
players[0] = new PongPlayerThread(serverSocket.accept(), 0, rtnInfo());
players[0].start();
答案 1 :(得分:2)
问题是Thread.start()返回void,并且您尝试将new PPT(...).start()
的结果分配给players[0]
。
new PPT(...).start()
返回void,因此编译器抱怨它无法将此void转换为PongPlayerThread类型的对象。