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

来源:互联网 发布:ios网络游戏数据修改 编辑:程序博客网 时间:2024/06/06 08:28
<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
原创粉丝点击