thrift服务端获取客户端ip地址。

<pre name="code" class="java">public class TProcessorMng implements TProcessor {
	private TProcessor processor;
	
	public TProcessorMng(TProcessor processor) {
		this.processor = processor;
	}

	public boolean process(TProtocol in, TProtocol out) throws TException {
		TTransport t = in.getTransport();
		InetAddress ia = t instanceof TSocket ? ((TSocket) t).getSocket().getInetAddress() : null;
		// Now you have the IP address, so what ever you want.
		System.out.println(ia);
		MaizuoConfig serverConfig=MaizuoConfig.getInstance();
		String ipList = serverConfig.getConfig().getString("ipList");
		List<String> limitIp = new ArrayList<String>();
		String[] strs=ipList.split(",");
		for(String substr:strs){
			limitIp.add(substr);
		}
		String reqIp = ia.toString().replace("/", "");
		// Delegate to the processor we are decorating.
		if (!limitIp.contains(reqIp)) {
			MaizuoLogUtil.writeLog(22+"", 22+"", "", "IP:", 
					reqIp+"", "不在ip群中.", "1");
			System.out.println("ip错误,禁止访问.");
			return false;
		}
		System.out.println("ip正确.");
		return processor.process(in, out);
	}

}

	/**
	 * 多线程服务器端使用标准的堵塞式I/O
	 */
	public void startPoolServer() 
	{      
		try {   
				MaizuoConfig serverConfig=MaizuoConfig.getInstance("editorbase");
				int port = serverConfig.getConfig().getInt("serverPort");
			    TServerSocket serverTransport = new TServerSocket(port); 
			    System.out.println("serverPort:" + port);
			    
			    EditorService.Processor process = new EditorService.Processor(new EditorProcess());
			    Factory portFactory = new TBinaryProtocol.Factory(true, true);  
			    TProcessor tpm = new TProcessorMng(process);
			    
			    Args args = new Args(serverTransport);
			    args.processor(tpm);     
			    args.protocolFactory(portFactory);   
			    args.maxWorkerThreads = serverConfig.getConfig().getInt("maxWorkerThreads");
			    args.minWorkerThreads = serverConfig.getConfig().getInt("minWorkerThreads");
			    System.out.println("maxWorkerThreads:" + args.maxWorkerThreads + "minWorkerThreads:" + args.minWorkerThreads);
			    TServer server = new TThreadPoolServer(args);  
			    System.out.println("editorserver is startup success!");
			    server.serve();
                
             } catch (TTransportException e) 
             {
                   e.printStackTrace();         
             }
	}


 
 

在构造该函数的时候,process会自动运行。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值