每当玩家与服务器连接时,我希望服务器将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。