【发布时间】:2017-04-19 14:18:58
【问题描述】:
我学习了一些教程并了解了如何将线程用于多线程套接字服务器。我为客户端创建了一个具有 ClientServiceThread 类的服务器类。当线程收到来自客户端的消息时,如何使用 Server 类访问该信息?
这是我的服务器线程:
public void run(){
game = new Game();
try{
serverSocket = new ServerSocket(port);
System.out.println("Server Started");
}
catch (IOException e){
System.out.println(e);
}
while(true) {
try {
Socket clientSocket = serverSocket.accept();
ClientServiceThread cliThread = new ClientServiceThread(clientSocket);
threads.add(cliThread);
cliThread.start();
} catch(IOException e) {
e.printStackTrace();
}
}
}
这是我的 ClientServiceThread 类:
public void run() {
boolean m_bRunThread = true;
System.out.println("Accepted Client Address - " + socket.getInetAddress().getHostAddress());
try {
out = new ObjectOutputStream(socket.getOutputStream());
in = new ObjectInputStream(socket.getInputStream());
while(m_bRunThread) {
String clientCommand = in.readUTF();
System.out.println("Client Says :" + clientCommand);
if(!gameStarted) {
out.writeUTF("GAME_ALREADY_STARTED");
out.flush();
}
}
} catch(Exception e) {
e.printStackTrace();
}
}
编辑 1:本质上,我正在收听客户端处理程序线程上的命令/消息。稍后我想将它们处理到我的服务器中,以便我可以通过它操作我的游戏对象。
【问题讨论】:
-
您能否更具体地说明您希望从 ClientServiceThread 传回服务器的内容?
-
我想从客户端接收消息,然后为我创建的游戏对象处理它。
标签: java multithreading sockets