java 类似Tomcat服务器 接口

java 类型Tomcat 服务器多进程监听,返回数据   可以动态设置想要的ip



  package com.jiaheu.result;


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.URLDecoder;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;


public class Entrance{


private static ExecutorService exec ;
private Socket socket;
private static String inetAddress;


public static void main(String[] args) throws Exception{
for(String in:args){
inetAddress = in;
}


exec = Executors.newCachedThreadPool(); 
Entrance wechatSpider = new Entrance();
wechatSpider.startServer();

public  void startServer() throws InterruptedException, ExecutionException{  
try {  
ServerSocket serverSocket = new ServerSocket();// 
if(inetAddress != null){
serverSocket.bind(new InetSocketAddress(inetAddress,2345)); 
}else{
serverSocket.bind(new InetSocketAddress(2345));
}
System.out.println("设置IP为:"+inetAddress); 
System.out.println("等待请求");  
while(true){
socket = serverSocket.accept();  
InputStream inputStream = socket.getInputStream();  
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));  
String readContent;  
while ((readContent = bufferedReader.readLine()) != null) {   
if(readContent.contains("GET /geturl?url=")){
if(readContent.contains("/geturl?url=")){
String[] msgs = readContent.toString().split(" "); 
String url[] = null;
url = msgs[1].split("url=");
exec.submit(new TaskWithResult(URLDecoder.decode(url[1]),socket));  
}
}
if (readContent.length() == 0)  
break;  
}   


}  
} catch (IOException e) {  
e.printStackTrace();  
}  
}
}


class TaskWithResult implements Callable<String>{//实现这个接口,调用的是call()方法  
    private String strUrlPath;  
    private  SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    private Socket socket;
    public TaskWithResult(String strUrlPath,Socket socket){  
        this.strUrlPath  = strUrlPath; 
        this.socket = socket;
    }  
 


public String call(){  
    try{
    //
WebClient webClient = new WebClient();  
webClient.getOptions().setJavaScriptEnabled(false);  
webClient.getOptions().setCssEnabled(false);  
WebRequest webRequest = new WebRequest(new URL(strUrlPath));  
webRequest.setHttpMethod(HttpMethod.GET); 
Page page = webClient.getPage(webRequest);  
WebResponse webResponse = page.getWebResponse();  
int status = webResponse.getStatusCode();  
String startTime = formatter.format(new Date());
((HtmlPage) page).asXml();  
String endTime = formatter.format(new Date());
webClient.close(); 




OutputStream outputStream = socket.getOutputStream();  
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream));  

System.out.println("拿到数据");  
bufferedWriter.write("HTTP/1.1 200 OK\n");  
bufferedWriter.write("Content-Type: text/html;charset=utf8\n");  
bufferedWriter.write("\n"); 
System.out.println(status + "|"+startTime+"|"+endTime);  
System.out.println("数据输出完毕.");  
bufferedWriter.write(status + "|"+startTime+"|"+endTime); 

bufferedWriter.flush();  
socket.close();  
System.out.println("客户端关闭."); 
}catch(Exception e){}
        return null;
    }  

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值