打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
snippets/438843 | CODE
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.Writer;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.Set;

public class openUrl {
private static ServerSocket server;
private final static int port = 80;
public static void main(String[] args) {
try {
server = new ServerSocket(port);
System.out.println("server port: " + port + " start...");
} catch (Throwable t) {
t.printStackTrace();
return;
}
nextServerThreadStart();
}
private static Thread nextServerThreadStart() {
Thread t = new Thread(new Runnable() {
public void run() {
Socket socket = null;
try {
socket = server.accept();
} catch (Throwable t) {
t.printStackTrace();
} finally {
nextServerThreadStart();
}
if (socket != null) {
// System.out.println(socket.getPort());
Thread t = sendThreadStart(socket);
while (t.isAlive()) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
try {
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
});
t.start();
return t;
}
private static Thread sendThreadStart(final Socket socket) {
Thread t = new Thread(new Runnable() {
public void run() {
BufferedReader is = null;
OutputStream os = null;
try {
socket.setSoTimeout(20000);
Map<String, String> paramters = getParamters(socket);
String encoding = paramters.get("encoding");
String url = paramters.get("url");
String content = getURLContent(url, encoding);
if (content == null)
return;
if (content.indexOf("<base ") == -1) {
content = content.replaceFirst("<head>", "<head><base href=\"" + url+"\" />");
}
Writer out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), encoding));
out.write(content);
out.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
/*
* if (out != null){ try { out.close(); } catch (Exception
* e) {} }
*/
/*
* if (is != null) { try { is.close(); } catch (Exception e)
* { } }
*/
if (os != null) {
try {
os.close();
} catch (Exception e) {
}
}
}
}
});
t.start();
return t;
}
private static String gethead(final Socket socket) throws Exception {
InputStream reader = socket.getInputStream();
int available;
ByteArrayOutputStream data = new ByteArrayOutputStream();
while ((available = reader.available()) > 0) {
byte[] b = new byte[available];
reader.read(b);
data.write(b);
}
// System.out.println(data.toString());
return data.toString();
}
private static Map<String, String> getParamters(final Socket socket) throws Exception {
Map<String, String> map = new HashMap<String, String>();
String head = gethead(socket);
if (head.split(" ").length < 2)
return map;
String GETStr = head.split(" ")[1];
String[] split = GETStr.replaceFirst("%\\?", "").split("[&?]+");
for (String str : split) {
int i = str.indexOf("=");
if (i >= 1 && i <= str.length() - 2) {
map.put(str.substring(0, i), str.substring(i + 1));
}
}
return map;
}
public static String getURLContent(String url, String encoding) {
if (url == null || "".equals(url.trim()))
return null;
StringBuffer content = new StringBuffer();
try {
// 新建URL对象
URL u = new URL(url);
InputStream in = new BufferedInputStream(u.openStream());
InputStreamReader theHTML = new InputStreamReader(in, encoding != null ? encoding : "gb2312");
int c;
while ((c = theHTML.read()) != -1) {
content.append((char) c);
}
}
// 处理异常
catch (MalformedURLException e) {
System.err.println(e);
} catch (IOException e) {
System.err.println(e);
}
return content.toString();
}
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Java发送ios推送消息(APN)的代码示例
读取页面数据的例子
java代码socket的简单实现
JAVA 网络程序
java也可以做黑客?
自己实现简单RPC功能
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服