如何在java中使用多人游戏通过网络发送变量?

时间:2015-09-05 08:09:54

标签: java multiplayer

每当玩家与服务器连接时,我希望服务器将1添加到变量:connectedPlayers并将其发送给与此服务器连接的所有客户端。 有一个播放器工作正常,服务器向我的客户端发送1。 但是当我与另一个客户端连接时,事情变得有线,connectedPlayers现在是:2在服务器端但在客户端是:514,33554434,0,2,35554432,16777216。

我正在使用的一些代码:

user = new ArrayList<Users>();
serverSocket = new ServerSocket(7777);
Thread thread = new Thread(this);
thread.start();

和while(true)循环中的run方法:

                socket = serverSocket.accept();
                connectedPlayers++;
                user.add(null);
                for(int i = 0; i < connectedPlayers; i++){
                    if(user.get(i) == null){
                        out = new DataOutputStream(socket.getOutputStream());
                        in = new DataInputStream(socket.getInputStream());
                        user.set(i, new Users(out, in, i));
                        Thread thread = new Thread(user.get(i));
                        thread.start();
                        break;
                    }
                }

Users类也是一个Runnable实现的类,并执行此操作:

//reveive some stuff
for(int i = 0; i < connectedPlayers; i++){
    if(user.get(i) != null){
        //send some other stuff
        user.get(i).out.writeInt(connectedPlayers); //out = DataOutputStream
    }
}

在Client类(imnplements Runnable)中,我将一些东西发送到服务器,然后我在Client类中获得另一个接收数据的类(实现Runnable):

 //send stuff to Server in the client class

//in the second class in the run method in a while loop
int playerid = in.readInt();
int x = in.readInt();
int y = in.readInt();
int image = in.readInt();
int status = in.readInt();
int connectedPlayer = in.readInt();
client.update(playerid, x, y, image, status, connectedPlayer);

为了让这项工作有所改变,所有的帮助都非常感谢。 如果这是太多的代码和东西,告诉我,我会很乐意改变它!

提前致谢,Joeri。

0 个答案:

没有答案