首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编写java服务器以处理同时的客户端响应

编写java服务器以处理同时的客户端响应
EN

Stack Overflow用户
提问于 2015-12-03 01:48:30
回答 3查看 1.7K关注 0票数 0

我是一个团队,正在构建一个4人多人游戏,我正在开发服务器的内脏使用套接字。目前,我已经将服务器设置为接受多个客户端连接,并将它们保存到需要写入特定客户端时要访问的一系列套接字中。

我知道如何处理来自单个客户端的单个响应:

String response; while((response = in.readLine()) != null) {//do something}

但是,如何管理将同时发送到服务器的两个响应?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-12-03 02:23:19

我想你需要这样的东西:

代码语言:javascript
复制
someMethod() {

    // Your array of sockets
    Socket[] clientSockets;

    // Create a new Thread to handle each socket and start them
    for (int i = 0 ; i < clientSockets.length ; ++i) {
        Thread t = new ListenToClientThread(clientSockets[i]);
        t.start();
    }
}

// When you call start() on a Thread it calls run()
class ListenToClientThread extends Thread {
    private Socket socket;

    ListenToClientThread(Socket socket) {
        this.socket = socket;
    }

    @Override
    public void run() {
        PrintWriter out =
            new PrintWriter(socket.getOutputStream(), true);
        BufferedReader in = new BufferedReader(
            new InputStreamReader(socket.getInputStream()));

        String response;
        while((response = in.readLine()) != null) {//do something}
    }
}

这里的诀窍是以一种允许所有不同线程访问共享对象的方式处理所有响应,为此,您必须阅读所有关于同步性的内容,小心...there是龙!

票数 0
EN

Stack Overflow用户

发布于 2015-12-03 01:57:27

使用线程。在文档中也有一个例子。也可以看到右边的相关问题-->

https://docs.oracle.com/javase/tutorial/networking/sockets/clientServer.html

支持多客户端 为了保持KnockKnockServer示例的简单性,我们设计它来侦听和处理单个连接请求。但是,多个客户端请求可以进入同一个端口,从而进入同一个ServerSocket。客户端连接请求在端口排队,因此服务器必须按顺序接受连接。但是,服务器可以通过使用线程同时为它们提供服务--每个客户端连接一个线程。 这样一个服务器的基本逻辑流程是: 同时(true) {接受连接;创建一个线程来处理客户端;} 线程根据需要从客户端连接读取并写入。

票数 1
EN

Stack Overflow用户

发布于 2015-12-03 01:57:06

而不是在单个输入上,循环遍历所有输入并重新对它们进行重新排列。

只需实现socketObject.readline()或类似的。

代码语言:javascript
复制
for (Thread thread : threads)
    {
         thread.read()
    }
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34056471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档