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 Server started Server was setup and will tr​​y to create a socket Exception in thread "main" java.lang.NullPointerException at Pong.PongServer.main (PongServer.java:82)

それが指している行は、players[idPlayer] = new PongPlayerThread(serverSocket.accept(), idPlayer, rtnInfo()); です。???

4

2 に答える 2

2

問題は、 Thread.start() が void を返し、 to の結果を代入しようとしていることnew PPT(...).start()ですplayers[0]

new PPT(...).start()void を返すため、コンパイラは、この void を PongPlayerThread 型のオブジェクトに変換できないと不平を言っています。

于 2013-02-12T22:38:31.710 に答える