【问题标题】:What should a Socket Thread class do [duplicate]Socket Thread类应该做什么[重复]
【发布时间】:2015-11-22 22:27:18
【问题描述】:
public class SOCKET_SERVER {

    private JmailHelp JmailHELPER = new JmailHelp();
    static int PORT = 444;

    public static void main(String[] args) throws Exception {

        SOCKET_SERVER SERVER = new SOCKET_SERVER();
        SERVER.JmailHELPER.resetONN();
        ServerSocket SRVSOCK = new ServerSocket(PORT);
        //ArrayList<SocketStatus> OnlineUsers = new ArrayList<SocketStatus>();

        Socket SOCK = SRVSOCK.accept();
        //new ServerThread(SOCK).start();
        SocketStatus a = new SocketStatus(SOCK, false);
        //OnlineUsers.add(a);
        //String action = "";
        SERVER.ServerActionsHandler(SERVER, SRVSOCK, SOCK, a);

    }//
}

如果我所给予的还不够,请原谅我,如果可以,请不要犹豫,并想尝试帮助我 出色地, 这是我的套接字服务器类ServerActionHandler 是我创建的一个方法,它从客户端接收一个字符串作为“输入”(BufferedReader)并调用正确的方法为客户端提供服务。

例如他想登录:

  1. 他(客户端)发送字符串“login”

  2. 然后服务器将ServerActionHandler作为一个“输入”在一个名为action的字符串中,然后识别“登录”,然后从服务器类调用Acceptlogin方法

  3. 同时发送“logi 消息”的客户端正在从客户端类调用 Dologin 方法

4.ServerActionsHandler 的循环结束

5.一个新的循环开始向客户端询问新的操作

我的项目适用于一台服务器和一个客户端 我想让它为许多客户工作

还有更多我使用的东西 JmailHELPER 对象 在SOCKET_SERVER 类的几乎所有方法中(例如 login_accept,register_accept...) 为了调用它的类的一些方法。

并且SocketStatus保留一个变量,如果使用服务器的某个套接字是否已登录

据我所知,我必须创建一个 ServerThreads 类来扩展 Threads 以处理多个用户。 该类方法的构造函数和运行应该做什么

例如 A SocketThread 我有这个http://www.cdk5.net/ipc/programCode/TCPServer.java

谢谢。

【问题讨论】:

    标签: java multithreading sockets server


    【解决方案1】:

    好的, 我知道这很有趣,但是在休息了两个小时后,我试图找到解决方案 3 分钟,然后我解决了它(这就是我现在所相信的:P)

    至少它在我的电脑上为两个客户工作,所以我明天会在不止一台电脑上检查它

    无论如何,我都会发布我的问题的答案,以便您遇到常见问题时可以看到它

    public static void main(String[] args) throws Exception {
        SOCKET_SERVER SERVER = new SOCKET_SERVER();
        SERVER.JmailHELPER.resetONN();
        ServerSocket SRVSOCK = new ServerSocket(PORT);
    
        while (true) {
            Socket SOCK = SRVSOCK.accept();
            SocketStatus a = new SocketStatus(SOCK, false);
            new Thread() {
                public void run() {
                    try {
                        SERVER.ServerActionsHandler(SERVER, SRVSOCK, SOCK, a);
                    } catch (Exception ex) {
                        Logger.getLogger(SOCKET_SERVER.class.getName()).log(Level.SEVERE, null, ex);
                    };
                }
            }.start();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2014-10-26
      • 1970-01-01
      • 2011-02-23
      • 1970-01-01
      • 2021-04-27
      • 2022-01-22
      • 2015-08-13
      • 2017-08-12
      • 2015-09-17
      相关资源
      最近更新 更多