gpt4 book ai didi

java - java中具有多个客户端的网络服务器

转载 作者:行者123 更新时间:2023-11-30 04:21:50 24 4
gpt4 key购买 nike

我实现了一个相当简单的服务器,可以处理多个客户端,并且我首先接受客户端

    private static Queue<Player> playerList = new ArrayDeque<Player>(); 

try {
serverSocket = new ServerSocket(port);

// Listen for new clients
Socket clientSocket = null;
int numPlayers = 0;

while (numPlayers < 2){
clientSocket = serverSocket.accept();

if(clientSocket != null){
// Create a new player
Player p = new Player(clientSocket);
// Add them to the list of players
playerList.add(p);
}

}
}
catch (IOException e) {
System.out.println("Could not listen on port: " + port);
System.exit(-1);
}

从我读到的内容来看,似乎通常会为每个客户端创建一个新线程,但如果有更简单的方法,我真的不认为需要经历这个麻烦。我只需要能够在服务器和客户端之间发送和接收消息。

while (true) {
// Check for anything on the buffer

// Parse message

}

有没有一种简单的方法

监听传入消息

确定消息来自哪个客户端

解析消息等。

所有内容都在一个循环中,无需为每个客户端创建单独的线程?

最佳答案

尝试使用这样的东西:

while (true) {
for(Player p : playerList) {
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getSocket().getInputStream()));
String data;
while ((data = reader.readLine() != null) {
p.packetRecieved(data);
}
}
}

关于java - java中具有多个客户端的网络服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16868324/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com