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

📄 abstractsessionacceptor.java

📁 银行项目为后台socket通信写的程序
💻 JAVA
字号:
/****************************************************************************
 * Package		: com.ecSolutions.ecAppServer.server.session
 * File			: AbstractSessionAcceptor.java
 * Create Date  : 2007-7-20
 * Author		: Steven Chen
 * 
 * Copyright(C) 2006 ecSolutions(shanghai) Co.,Limited.All Rights Reserved.
 *			
 ***************************************************************************/
package com.ecSolutions.ecAppServer.server.session;

import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketAddress;

import com.ecSolutions.ecAppServer.server.Session;
import com.ecSolutions.ecAppServer.server.SessionAcceptor;
import com.ecSolutions.ecAppServer.server.SessionAcceptorHandler;
import com.ecSolutions.ecAppServer.server.util.Configuration;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 * Abstract session acceptor.
 * 
 * @author Steven Chen
 * @version $Id: AbstractSessionAcceptor.java,v 1.2 2007/07/26 03:33:50 stevenchen Exp $
 */
public abstract class AbstractSessionAcceptor implements SessionAcceptor {

    private static final Log log = LogFactory
            .getLog(AbstractSessionAcceptor.class);

    private SocketAddress address = new InetSocketAddress(0);
    private int port = 0;
    private int backlog = Configuration.getAcceptorBacklog();
    private boolean reuseAddr = Configuration.isReuseAcceptorAddress();
    private SessionAcceptorHandler handler = null;

    public void setListenAddress(SocketAddress address) {
        if (address != null) {
            if (isStarted())
                throw new IllegalStateException(
                        "can't set listen address after acceptor started");
            this.address = address;
        }
    }

    public SocketAddress getListenAddress() {
        return address;
    }

    public void setListenPort(int port) {
        if (isStarted())
            throw new IllegalStateException(
                    "can't set listen port after acceptor started");
        this.port = port;
        this.address = new InetSocketAddress(port);
    }

    public int getListenPort() {
        return port;
    }

    public int getBacklog() {
        return backlog;
    }

    public void setBacklog(int backlog) {
        if (isStarted())
            throw new IllegalStateException(
                    "can't set backlog after acceptor started");
        this.backlog = backlog;
    }

    public boolean isReuseAddress() {
        return reuseAddr;
    }

    public void setReuseAddress(boolean b) {
        if (isStarted())
            throw new IllegalStateException(
                    "can't set reuse address after acceptor started");
        this.reuseAddr = b;
    }

    public SessionAcceptorHandler getAcceptorHandler() {
        return handler;
    }

    public void setAcceptorHandler(SessionAcceptorHandler handler) {
        if (handler != null)
            this.handler = handler;
    }

    protected void setSocketOptions(Socket socket) throws IOException {
        int recvBufferSize = Configuration.getRecvBufferSize();
        if (recvBufferSize > 0)
            socket.setReceiveBufferSize(recvBufferSize);

        int sendBufferSize = Configuration.getSendBufferSize();
        if (sendBufferSize > 0)
            socket.setSendBufferSize(sendBufferSize);

        socket.setReuseAddress(Configuration.isReuseSessionAddress());
        socket.setTcpNoDelay(Configuration.isTcpNoDelay());
    }

    protected void setServerSocketOptions(ServerSocket socket)
            throws IOException {
        socket.setReuseAddress(isReuseAddress());

        int recvBufferSize = Configuration.getRecvBufferSize();
        if (recvBufferSize > 0)
            socket.setReceiveBufferSize(recvBufferSize);

        socket.bind(getListenAddress(), getBacklog());
    }

    protected final void exceptionCaught(Throwable e) {
        try {
            handler.exceptionCaught(this, e);
        } catch (Throwable throwable) { // protect catch
            log.error(throwable, throwable);
        }
    }

    protected final void sessionAccepted(Session session) {
        try {
            handler.sessionAccepted(this, session);
        } catch (Throwable e) {
            exceptionCaught(e);
        }
    }
}

⌨️ 快捷键说明

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