0

我试图创建一个可以存储在数组中的线程类,这将使我更容易处理从客户端到服务器的用户输入。

这是我的 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();

但是当客户端连接时,我收到此错误 Pong 400.0:301.0:60.0:300.0:740.0:300.0 服务器已启动服务器已设置,并将尝试在 Pong.PongServer.main 的线程“main”java.lang.NullPointerException 中创建套接字异常(PongServer.java:82)

它指向的行是 player[idPlayer] = new PongPlayerThread(serverSocket.accept(), idPlayer, rtnInfo()); ???

4

2 回答 2

5
players[0] = new PongPlayerThread(serverSocket.accept(), 0, rtnInfo());
players[0].start();
于 2013-02-12T22:36:59.167 回答
2

问题是 Thread.start() 返回 void,而您正试图将结果分配给new PPT(...).start()to players[0]

new PPT(...).start()返回 void,因此编译器抱怨它无法将此 void 转换为 PongPlayerThread 类型的对象。

于 2013-02-12T22:38:31.710 回答