0
我正在编写一个使用套接字进行通信的Android应用程序。在一个名为sever
的类中,我接受客户端(android设备)并为它们打开套接字。服务器套接字多线程与设备混淆
服务器端:
public void run() {
while (!Thread.currentThread().isInterrupted()) {
try {
Socket socket = serverSocket.accept();
Client clientThread = new Client(socket);
System.out.println("New client: " + clientThread.getName());
new Thread(clientThread).start();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
一个成功的连接用户可以创建一个group
,这就像一个房间,为客户的号码连接一起玩了。
群创建都是在这里完成:
服务器端:
客户:
private void client_create() {
this.mGroup = new Group();
mGroup.joinPlayer(this);
System.out.println("New group for: " + name);
}
组:
public Group(int nClients){
// Clients in this group
this.clients = new ArrayList<Client>();
}
public void joinPlayer(Client player){
clients.add(player);
}
客户端:
Connecti在处理:
try {
socket = new Socket(hostName, portNumber);
out = new PrintWriter(new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream())), true);
in = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
Listener listener = new Listener();
new Thread(listener).start();
} catch (IOException e) {
e.printStackTrace();
}
我在2个android设备和我的本地主机上运行这个程序作为服务器。连接完成后,我尝试创建2个独立的不同组。在进行调试时,它似乎都是合法的,直到我由于2个不同的运行线程而失去它时才达到某个点。
所发生的奇怪的是,所述第一组与所述第一客户端(clients
包含第一设备客户对象)创建后,再与第二玩家的第二组(clients
包含第二设备客户对象),第一组clients
数组包含第二个客户端对象(来自第二个设备)。 你有什么想法吗?我做错什么了吗?