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

📄 crbtserversocket.java

📁 中国联通炫铃业务接口开发
💻 JAVA
字号:
package com.wireless.crbt.gwif.global.pub;

import java.io.BufferedInputStream;
import java.io.EOFException;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Vector;

//import org.apache.commons.betwixt.io.BeanReader;
import org.apache.log4j.Logger;

import com.wireless.crbt.gwif.global.CRBT;
//import com.wireless.sms.pub.net.SocketConstant;
//import com.wireless.sms.pub.net.netty2.MTServer;

public class CRBTServerSocket implements Runnable {
	private Logger log = null;
//	  private CRBT crbt = null;
	  private int port;
	  private Vector allowclient;
//	  private BeanReader beanReader = new BeanReader();
	  private CRBTCenterGlobalInterface global;
	  private CRBTServer crbtServer = null;
	  /**
	   * 构造方法
	   * @param allowclient Vector
	   * @param port int
	   * @param global CenterGlobalInterface
	   * @param log Logger
	   */
	  public CRBTServerSocket(Vector allowclient, int port,
	                        CRBTCenterGlobalInterface global, Logger log) {
	    this.port = port;
	    this.allowclient = allowclient;
	    this.global = global;
	    this.log = log;
	  }
	  /**
	   * 接受对象
	   */
	  public void run() {
	    if (CRBTSocketConstant.SOCKETMETHOD == 1) {
	      this.receiveMTByObject();
	    }
	    else {
	      this.receiveCRBTByStream();
	    }
	  }
	  /**
	   * 通过xml字符串接收对象
	   */
	  public void receiveCRBTByStream() {
	    crbtServer = new CRBTServer(port, allowclient, global, log);
	    crbtServer.start();
	  }

	  public void stop(){
	    crbtServer.stop();
	  }
	  /**
	   * 通过对象序列化接收对象
	   */
	  public void receiveMTByObject() {

	    ServerSocket serverSocket = null;
	    try {
	      serverSocket = new ServerSocket(port);
	    }
	    catch (IOException ex) {
	      ex.printStackTrace();
	      log.error("418Socket-对象创建mt服务器监听失败");
	    }

	    Socket socket = null;

	    while (true) {
	      try {
	        socket = serverSocket.accept();
	        String remoteIP = socket.getInetAddress().getHostAddress();

	        //判断是否是允许连接的客户端
	        if (!allowclient.contains(remoteIP)) { //不是
	          /* zmli 0728
	           sc.getOutputStream().write(new SocketResponse(1).getBytes());
	                       sc.getOutputStream().flush();
	                       sc.close();
	           */
	          //zmli 0728
	        }
	        else { //是

	          synchronized (this) {
	            try {
	              ObjectInputStream ois = new ObjectInputStream(new
	                  BufferedInputStream(socket.getInputStream()));
	              CRBT crbt = (CRBT) ois.readObject();
	              global.add(crbt);

	            }
	            catch (ClassNotFoundException ex) {
	              ex.printStackTrace();
	            }
	            catch (EOFException ex) {
	            }
	            finally{
	              if( socket != null )
	                socket.close();
	            }
	          }
	        }
	      }
	      catch (EOFException ex1) {
	        ex1.printStackTrace();
	        if (log != null) log.error("419Socket-对象读取mt数据失败");
	      }
	      catch (Exception ex) {
	        ex.printStackTrace();
	        if (log != null) log.error("420Socket-对象接受mt数据失败");
	      }
	    }
	  }

}

⌨️ 快捷键说明

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