为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

翻阅古今 2019-11-11 13:19:09
如何处理多个客户端以连接到一台服务器?我有这个LogServer.javaimport javax.net.ssl.*;import javax.net.*;import java.io.*;import java.net.*;public class LogServer {  private static final int PORT_NUM = 5000;  public static void main(String args[]) {    ServerSocketFactory serverSocketFactory =      ServerSocketFactory.getDefault();    ServerSocket serverSocket = null;    try {      serverSocket =        serverSocketFactory.createServerSocket(PORT_NUM);    } catch (IOException ignored) {      System.err.println("Unable to create server");      System.exit(-1);    }    System.out.printf("LogServer running on port: %s%n", PORT_NUM);    while (true) {      Socket socket = null;      try {        socket = serverSocket.accept();        InputStream is = socket.getInputStream();        BufferedReader br = new BufferedReader(          new InputStreamReader(is, "US-ASCII"));        String line = null;        while ((line = br.readLine()) != null) {          System.out.println(line);        }      } catch (IOException exception) {        // Just handle next request.      } finally {        if (socket != null) {          try {            socket.close();          } catch (IOException ignored) {          }        }      }    }  }}和一个嵌入式小程序,其中包含部分代码,例如import java.io.*;import java.util.logging.*;public class LogTest{  private static Logger logger = Logger.getAnonymousLogger();  public static void main(String argv[]) throws IOException  {    Handler handler = new SocketHandler("localhost", 5000);    logger.addHandler(handler);    logger.log(Level.SEVERE, "Hello, World");    logger.log(Level.SEVERE, "Welcome Home");    logger.log(Level.SEVERE, "Hello, World");    logger.log(Level.SEVERE, "Welcome Home");  }}现在的问题是,如果我在服务器上运行“ java LogServer”,它将打开应用程序并等待输入流,如果打开站点,它将开始流式传输日志。但是,如果我使用其他计算机/网络再打开一个,则第二个站点不会记录该流。似乎是因为第一个仍绑定到端口5000。我该如何处理?套接字实际上如何与多个客户端/一台服务器一起工作?
查看完整描述

3 回答

  • 3 回答
  • 0 关注
  • 442 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信