⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 httptunnelingengine.java

📁 java实现的代理程序 socket 编程实现的http 和socket 代理程序
💻 JAVA
字号:
package javatunnel;import java.io.*;import java.net.*;import java.util.Properties;import java.util.StringTokenizer;/** * *JavaTunnel * *Copyright (C) 2002 Andr閟 Ederra * *This program is free software; you can redistribute it and/or *modify it under the terms of the GNU General Public License *as published by the Free Software Foundation; either version 2 *of the License, or (at your option) any later version. * *This program is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with this program; if not, write to the Free Software *Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.*/public class HTTPTunnelingEngine extends Engine {private Configuration configuration;	private String ticket;	public HTTPTunnelingEngine(Configuration config) {		this.configuration=config;	}	public void listen(){				try {			System.out.println(					"Awaiting connections at port: "					+ configuration.getLocalPort());			serverSocket = new ServerSocket(configuration.getLocalPort());		} catch (IOException ioe) {			ioe.printStackTrace();			System.out.println(					"Error creating server socket in port: "					+ configuration.getLocalPort());			System.exit(1);		}		try {			Socket incoming;			//Socket outcoming;			while (true) {								incoming = serverSocket.accept();								System.out.println(						"Received connection  request from: "						+ incoming.getRemoteSocketAddress());								initializeServer();				//outcoming = openConnection();				DataHandler inDatahandler =					getIncomingDataHandler(incoming);				incomingHandlers.add(inDatahandler);				inDatahandler.start();				DataHandler outDatahandler =					getOutcomingDataHandler(incoming);				outcomingHandlers.add(outDatahandler);				outDatahandler.start();							}		} catch (IOException ioe) {			if (terminate) {				System.out.println("Terminating Redirect Engine");				return;			}			ioe.printStackTrace();			System.out.println("Error en el bucle de aceptacion de conexiones");			System.exit(1);		}				}	/**	 * Method initializeServer.	 */	private void initializeServer() {		byte[] buffer = new byte[1000];				if (configuration.getProxyPort() != 0) {			Properties systemProperties = System.getProperties();			systemProperties.setProperty("http.proxyHost", configuration.getProxyAddress());			systemProperties.setProperty("http.proxyPort",Integer.toString(configuration.getProxyPort() ));		}				try {				URL url =				new URL(					"http"						+ "://"						+ configuration.getServerAddress()						+ ":"						+ configuration.getServerPort()						+ "/JavaTunnel/server");			HttpURLConnection GETconn =				(HttpURLConnection) url.openConnection();			GETconn.setDoInput(true);			GETconn.setRequestMethod("GET");			GETconn.setUseCaches(false);			GETconn.setRequestProperty(				"TunnelControl",				"CONNECT " + configuration.getDestinationAddress() + " " + configuration.getDestinationPort());			InputStream inStream = GETconn.getInputStream();			int n = 0;			while (n != -1) {				n = inStream.read(buffer);			}			ticket = GETconn.getHeaderField("TunnelControl");			StringTokenizer tokenizer = new StringTokenizer(ticket);			tokenizer.nextToken();			ticket = tokenizer.nextToken();		} catch (IOException ioe) {			ioe.printStackTrace();			System.out.println(				"Error de conexi髇 en sockets\nExcepcion: " + ioe);			System.exit(1);		}	}	private DataHandler getOutcomingDataHandler(Socket localSocket) {		return new HTTPTunnelingOutcomingDataHandler(				localSocket,				configuration.getDestinationAddress(),				configuration.getDestinationPort(),				configuration.getServerAddress(),				configuration.getServerPort(),				ticket);	}	private DataHandler getIncomingDataHandler(Socket localSocket) {		return new HTTPTunnelingIncomingDataHandler(			localSocket,			configuration.getDestinationAddress(),			configuration.getDestinationPort(),			configuration.getServerAddress(),			configuration.getServerPort(),			ticket);	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -