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

📄 tcp.java

📁 JGRoups源码
💻 JAVA
字号:
// $Id: TCP.java,v 1.37 2006/10/02 06:47:53 belaban Exp $package org.jgroups.protocols;import org.jgroups.Address;import org.jgroups.blocks.ConnectionTable;import org.jgroups.stack.IpAddress;import java.net.InetAddress;import java.util.Collection;import java.util.Properties;/** * TCP based protocol. Creates a server socket, which gives us the local address of this group member. For * each accept() on the server socket, a new thread is created that listens on the socket. * For each outgoing message m, if m.dest is in the ougoing hashtable, the associated socket will be reused * to send message, otherwise a new socket is created and put in the hashtable. * When a socket connection breaks or a member is removed from the group, the corresponding items in the * incoming and outgoing hashtables will be removed as well.<br> * This functionality is in ConnectionTable, which isT used by TCP. TCP sends messages using ct.send() and * registers with the connection table to receive all incoming messages. * @author Bela Ban */public class TCP extends BasicTCP implements ConnectionTable.Receiver {    private ConnectionTable ct=null;   public TCP() {   }    public String getName() {        return "TCP";    }    public int getOpenConnections()      {return ct.getNumConnections();}    public String printConnections()     {return ct.toString();}    /** Setup the Protocol instance acording to the configuration string */    public boolean setProperties(Properties props) {        super.setProperties(props);        if(props.size() > 0) {            log.error("the following properties are not recognized: " + props);            return false;        }        return true;    }    public void send(Address dest, byte[] data, int offset, int length) throws Exception {        ct.send(dest, data, offset, length);    }    public void retainAll(Collection members) {        ct.retainAll(members);    }    public void start() throws Exception {        ct=getConnectionTable(reaper_interval,conn_expire_time,bind_addr,external_addr,start_port,end_port);        ct.setUseSendQueues(use_send_queues);        // ct.addConnectionListener(this);        ct.setReceiveBufferSize(recv_buf_size);        ct.setSendBufferSize(send_buf_size);        ct.setSocketConnectionTimeout(sock_conn_timeout);        ct.setTcpNodelay(tcp_nodelay);        ct.setLinger(linger);        local_addr=ct.getLocalAddress();        if(additional_data != null && local_addr instanceof IpAddress)            ((IpAddress)local_addr).setAdditionalData(additional_data);        super.start();    }    public void stop() {        ct.stop();        super.stop();    }   /**    * @param reaperInterval    * @param connExpireTime    * @param bindAddress    * @param startPort    * @throws Exception    * @return ConnectionTable    * Sub classes overrides this method to initialize a different version of    * ConnectionTable.    */   protected ConnectionTable getConnectionTable(long reaperInterval, long connExpireTime, InetAddress bindAddress,                                                InetAddress externalAddress, int startPort, int endPort) throws Exception {       ConnectionTable cTable;       if(reaperInterval == 0 && connExpireTime == 0) {           cTable=new ConnectionTable(this, bindAddress, externalAddress, startPort, endPort);       }       else {           if(reaperInterval == 0) {               reaperInterval=5000;               if(warn) log.warn("reaper_interval was 0, set it to " + reaperInterval);           }           if(connExpireTime == 0) {               connExpireTime=1000 * 60 * 5;               if(warn) log.warn("conn_expire_time was 0, set it to " + connExpireTime);           }           cTable=new ConnectionTable(this, bindAddress, externalAddress, startPort, endPort,                                      reaperInterval, connExpireTime);       }       return cTable;   }}

⌨️ 快捷键说明

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