⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 worker.java

📁 用java做的网页即时聊天系统。可以用于学习网页即时聊天功能的开发
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.kpdus.com/jad.html
// Decompiler options: packimports(3) 
// Source File Name:   OpenCHAT.java

import java.io.*;
import java.net.*;
import java.util.*;

class Worker extends OpenCHAT
    implements Runnable
{

    Worker()
    {
        error = null;
        s = null;
    }

    synchronized void setSocket(Socket s)
    {
        this.s = s;
        notify();
    }

    public synchronized void run()
    {
	Vector pool = new Vector();
        {
            if(s == null)
                try
                {
                    wait();
                }
                catch(InterruptedException e)
                {
                	 return; /* Loop/switch isn't completed */
                }
            try
            {
                handleClient();
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
            s = null;
             pool = OpenCHAT.threads;
            synchronized(pool)
            {
                if(pool.size() < Integer.parseInt(OpenCHAT.getProperty("CHAT_SERVER_WORKERS")))
                     return;;
            }
            return;
        }
//        vector;
//        if(true) goto _L2; else goto _L1;
//_L1:
//		Exception exception ;
//        throw exception;
    }

    void handleClient()
        throws IOException
    {
        String request;
        String topHeader;
        String URI;
        String scriptName;
        Hashtable URIParam;
        Hashtable requestENV;
        Hashtable cookie;
        BufferedReader is;
        PrintStream ps;
        request = null;
        int Damm;
        topHeader = "";
        URI = null;
        String queryString = null;
        scriptName = null;
        String httpMethod = null;
        URIParam = new Hashtable();
        requestENV = new Hashtable();
        cookie = new Hashtable();
        p("Client connection from " + s.getInetAddress().getHostAddress() + ":" + s.getPort());
        is = new BufferedReader(new InputStreamReader(s.getInputStream(), OpenCHAT.getProperty("CHAT_DEFAULT_CHARSET")));
        ps = new PrintStream(s.getOutputStream(), false, OpenCHAT.getProperty("CHAT_DEFAULT_CHARSET"));
        s.setSoTimeout(Integer.parseInt(OpenCHAT.getProperty("CHAT_CLIENT_TIMEOUT")));
        s.setTcpNoDelay(true);
        String inputLine;
        while((inputLine = is.readLine()) != null && !inputLine.equals("")) 
        {
            request = request + inputLine;
            if(topHeader.equals(""))
            {
                topHeader = inputLine;
            } else
            {
                int sep = inputLine.indexOf(": ") < 0 ? inputLine.length() : inputLine.indexOf(": ");
                String key = inputLine.substring(0, sep);
                String val = sep == inputLine.length() ? "" : inputLine.substring(sep + 2, inputLine.length());
                if(!key.equals("Cookie"))
                {
                    requestENV.put(key.toLowerCase(), val);
                } else
                {
                    sep = val.indexOf("=") < 0 ? val.length() : val.indexOf("=");
                    String name = val.substring(0, sep);
                    String vals[] = new String[5];
                    int n = 0;
                    int i = name.length() + 1;
                    for(int f = val.indexOf("&") < 0 ? val.length() : val.indexOf("&"); i >= 0; f = val.indexOf("&", f + 1) < 0 ? val.length() : val.indexOf("&", f + 1))
                    {
                        try
                        {
                            vals[n] = URLDecoder.decode(val.substring(i, f), OpenCHAT.getProperty("CHAT_DEFAULT_CHARSET"));
                        }
                        catch(Exception e)
                        {
                            vals[n] = val.substring(i, f);
                        }
                        n++;
                        i = val.indexOf("&", i + 1) < 0 ? -1 : val.indexOf("&", i + 1) + 1;
                    }

                    cookie.put(name, vals);
                }
            }
        }
        String topHeaderSplited[] = topHeader.split(" ");
         httpMethod = topHeaderSplited[0];
        URI = topHeaderSplited[1];
        if(URI.startsWith("/"))
            URI = URI.substring(1);
        if(httpMethod.indexOf("GET") >= 0);
        p("Client sent a header diferent than GET");
        p(" -> " + topHeader);
        ps.print("HTTP/1.0 305 unsupported method type.");
        ps.write(EOL);
        ps.flush();
        s.close();
        s.close();
        Domain Domain;
        User thisUser;
        String URISplited[] = URI.split("[?]", 2);
        scriptName = URISplited.length <= 0 ? "" : URISplited[0];
        queryString = URISplited.length <= 1 ? "" : URISplited[1];
        String queryStringSplited[] = queryString.split("&");
        for(int i = 0; i < queryStringSplited.length; i++)
        {
            String keyval[] = queryStringSplited[i].split("=", 2);
            try
            {
                keyval[0] = URLDecoder.decode(keyval[0], OpenCHAT.getProperty("CHAT_DEFAULT_CHARSET"));
            }
            catch(Exception e) { }
            if(keyval[0].length() > 0)
                URIParam.put(keyval[0], keyval.length != 2 || keyval[1].length() <= 0 ? "" : ((Object) (URLDecoder.decode(keyval[1], OpenCHAT.getProperty("CHAT_DEFAULT_CHARSET")))));
        }

        if(requestENV.containsKey("host") && ((String)requestENV.get("host")).indexOf(":") > -1)
            requestENV.put("host", ((String)requestENV.get("host")).replaceAll(":.*", ""));
//        Root;
        Domain = Root.getDomain((String)requestENV.get("host"));
        if(!scriptName.equals(OpenCHAT.getProperty("CHAT_VIRTUAL_ROOT") + "Top"))
        	 return;
        thisUser = User.getUser((String)URIParam.get("serial"), (String)URIParam.get("pass"));
        if(thisUser != null)
            return;
        boolean OK = printHeaders(ps);
        ps.print(Domain.apllyLang(Domain.defaultLang, "<h1><OpenCHAT:lang:User_not_found></h1>"));
        ps.print(Domain.apllyLang(thisUser.defaultLang, Domain.getTemplate("preOpened", thisUser.Room.Name, "Top")));
        ps.println("<!-- OpenCHAT (www.sistemica.info) -->");
        if(scriptName.equals(OpenCHAT.getProperty("CHAT_VIRTUAL_ROOT") + "Reader"))
        {
             Damm = 1;
            User User = new User((String)requestENV.get("host"), (String)URIParam.get("type"), (String)URIParam.get("room"), (String)URIParam.get("u"), (String)URIParam.get("serial"), (String)URIParam.get("pass"), ps, Domain.defaultLang);
            if(User.error != null)
            {
                OK = printHeaders(ps);
                ps.print(User.error);
                s.close();
            } else
            {
                OpenCHAT.p(" Domain:" + User.Domain.Name + "/" + User.type + " : " + User.Name + " logged in the room: " + User.Room.Name);
                OK = printHeaders(ps);
                ps.print(Domain.apllyLang(User.defaultLang, Domain.getTemplate("preOpened", User.Room.Name, "Reader")));
                ps.println("<!-- OpenCHAT (www.sistemica.info) -->");
                ps.println(Domain.apllyLang(User.defaultLang, OpenCHAT.getProperty("CHAT_READER_WELCOME_MESSAGE")));
                User.Room.sendAction(User.Name, "<OpenCHAT:lang:logged_in_the_room>");
                s.setSoTimeout(0);
                String newLine;
                try
                {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -