public void run() {
        ServerSocket serv_sock = null;
        final InetAddress local, local_2;
        Socket sock = null;
        try {
            local = InetAddress.getLocalHost(); //rp
            local_2 = InetAddress.getByName("127.0.0.1");
            serv_sock = new ServerSocket(7743); //T[o\Pbg
            serv_sock.setSoTimeout(500);

            while (Running) { //{Iɖ[v
                //ڑ
                try {
                    sock = serv_sock.accept();
                } catch (java.net.SocketTimeoutException e) {
                    continue;
                }
                try {
                    //[JłȂΏR
                    InetAddress remote = sock.getInetAddress();
                    if (!(remote.equals(local) || remote.equals(local_2))) {
                        sock.close();
                        continue;
                    }
                    //^CAEg̑̐ݒ
                    sock.setTcpNoDelay(true);
                    //Z}tHЂƂ炷
                    Sem.acquire();
                    //ڑv̏/Xbh̊Jn
                    Thread ct = new ClientThread(sock, ReqQueue, Sem, LoginInfo);
                    ct.start();
                } catch (InterruptedException ex2) {
                    ex2.printStackTrace();
                } catch (IOException ex2) {
                    ex2.printStackTrace();
                }
            }
            ConnectedLock.lock();
            Disconneted = true;
            DisconnectedCond.signalAll();
            ConnectedLock.unlock();
        } catch (UnknownHostException ex) {
            ex.printStackTrace();
        } catch (IOException ex) {
            ex.printStackTrace();
        } finally {
            try {
                if (sock != null) {
                    sock.close();
                }
                if (serv_sock != null) {
                    serv_sock.close();
                }
            } catch (IOException ex1) {
                ex1.printStackTrace();
            }
        }
    }