我在这里建造一些东西,我发现自己陷入了困境。首先介绍一下。我正在开发一个客户端 - 服务器游戏。它具有的功能之一是玩家可以用来与他人交谈的聊天。
Player1向服务器发送消息,服务器将其转发给相应的Player2。我的问题是:如何从另一个线程访问类,以便我可以让Socket对象将消息中继到Player2。
while (listening)
{
try
{
//this is how I start a thread for each connection
//do I need to use identifiers or something?
new Client(serverSocket.accept()).start();
}
catch(IOException A)
{
reportError(A.toString()); //reportError is a function of mine
}
}
答案 0 :(得分:0)
有很多方法可以实现这一目标,最简单的方法是:
public void start(){
try {
ServerSocket ss = new ServerSocket(port);
System.out.println("Starting server on port: " + port);
while (serverState) {
Socket socket = ss.accept();
//stop server
if (!serverState) {
break;
}
Client handler = new Client(this, socket);
handler.start();
}
//when server is stopped, close all connections
for (Client client : clients.values()) {
client.closeConnection();
}
} catch (IOException e) {
}
}
如果你在客户端的构造函数中发送“this”并将其设置为私有变量,你可以从run函数(其他线程)访问它