Socket Thread类应该做什么

时间:2015-11-22 22:27:19

标签: java multithreading sockets server

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的字符串中,然后识别“login”,然后从服务器类中调用Acceptlogin方法< / p>

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

  4. 4. ServerActionsHandle r的循环结束

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

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

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

    如果使用服务器的某个套接字已登录,则SocketStatus会保留一个变量

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

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

    感谢。

1 个答案:

答案 0 :(得分:0)

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

至少它正在我的电脑上为两个客户工作,所以我会在一台以上的电脑上查看tommorow

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

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();
    }
}