将多个客户端连接到一台服务器

杰西·弗利特维尔德(Jesse Vlietveld)

我正在尝试将所有客户端连接到一台服务器。我进行了一些研究,发现最简单的方法是为连接到服务器的每个客户端创建一个新线程。但是我已经停留在客户端断开连接并重新连接的部分。

客户

import java.io.IOException;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;

public class Test {
    private static int port = 40021;
    private static String ip = "localhost";

    public static void main(String[] args) throws UnknownHostException,
            IOException {
        String command, temp;
        Scanner scanner = new Scanner(System.in);
        Socket s = new Socket(ip, port);
        while (true) {
            Scanner scanneri = new Scanner(s.getInputStream());
            System.out.println("Enter any command");
            command = scanner.nextLine();
            PrintStream p = new PrintStream(s.getOutputStream());
            p.println(command);
            temp = scanneri.nextLine();
            System.out.println(temp);
        }
    }

}

服务器

import java.io.IOException;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class MainClass {

    public static void main(String args[]) throws IOException {
        String command, temp;
        ServerSocket s1 = new ServerSocket(40021);
        while (true) {
            Socket ss = s1.accept();
            Scanner sc = new Scanner(ss.getInputStream());
            while (sc.hasNextLine()) {
                command = sc.nextLine();
                temp = command + " this is what you said.";
                PrintStream p = new PrintStream(ss.getOutputStream());
                p.println(temp);
            }
        }
    }
}

当我连接一次后,它就可以正常工作,但是一旦我断开与客户端的连接并尝试重新连接(或连接第二个客户端),它就不会发出错误消息,或者它什么也不起作用。我正在尝试使其尽可能基本。

一个客户端的输出: 正确的输出

当我尝试连接第二个客户端时: 连接了2个客户端的输出

我希望有人可以帮助我。提前致谢。

用户5342366

您的服务器当前一次仅处理1个客户端,每个客户端使用线程,按如下所示修改服务器代码:-

public static void main(String[] args) throws IOException
{
    ServerSocket s1 = new ServerSocket(40021);
    while (true)
    {
        ss = s1.accept();
        Thread t = new Thread()
        {
            public void run()
            {
                try
                {
                    String command, temp;
                    Scanner sc = new Scanner(ss.getInputStream());
                    while (sc.hasNextLine())
                    {
                        command = sc.nextLine();
                        temp = command + " this is what you said.";
                        PrintStream p = new PrintStream(ss.getOutputStream());
                        p.println(temp);
                    }
                } catch (IOException e)
                {
                    e.printStackTrace();
                }
            }
        };
        t.start();
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

通过套接字将多个客户端编程到一台服务器

如何将一个客户端连接到多个服务器套接字?

Socket.io客户端一次连接到多个服务器

如何使服务器将客户端重定向到另一台服务器?

TCP客户端可以使用同一端口连接另一台服务器吗?

Anaconda连接到从另一台服务器创建的环境

将客户端连接到具有相同IP和端口的两台服务器

套接字编程将多个客户端连接到一台服务器并列出它们C

带有Grunt的AngularJS-连接到另一台服务器

Oracle Coherence的新增功能,试图将数据放入缓存中,两台机器一台服务器一个客户端

用PHP下载“双向代理”吗?(一台服务器提供文件,并使用客户端数据ping通另一台服务器)

一台服务器多客户端C / C ++

一台客户端断开连接后服务器关闭(JAVA)

MongoDB架构一台服务器多个客户端C#

将多个客户端连接到服务器:ArrayIndexOutOfBoundsException:0

每个客户端(在一台服务器上)的登录页面不同

在Windows Phone 8.1上对多个客户端一台服务器进行套接字编程

UDP中的一台服务器和多客户端聊天框

我无法从另一台服务器连接到反向 SSH

如何使用nodejs将客户端/用户从一台服务器反向代理到另一台服务器?

客户端向tcp服务器发送数据,tcp服务器向另一台服务器发送数据

将两个人连接到同一台服务器?

客户端只能在同一台计算机上连接到服务器

Zookeeper 客户端会话将超时或传输到另一台服务器?

ZeroMQ - 模拟多个客户端到一台服务器的标准套接字

多个客户端和一台服务器 Blazor 资产冲突

是否可以在 Blazor WebAssembly 应用程序中的同一台服务器上托管两个(多个)客户端

多个客户端连接到服务器

如何使用 Http 客户端(带有可选更改)将 Symfony 请求转发到另一台服务器?