<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會自動運行。