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

📄 controlserver.java

📁 java HTTP代理多线程监听和处理连接 java HTTP代理多线程监听和处理连接
💻 JAVA
字号:
/**
 * 
 */
package proxy;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

import java.io.InterruptedIOException;
import java.io.OutputStream;
import java.net.Socket;
import java.util.*;
/**
 * 控制服务
 * @author liwen
 *
 */
public class ControlServer implements Service {
	protected UserAuthorized userAuthorized;
	public UserAuthorized getUserAuthorized() throws Exception {
		return null;
	}
	
	private Socket socket;
	/**
	 * 
	 */
	public ControlServer() {
		// TODO Auto-generated constructor stub
	}
	
	public void serve(Socket soc) throws Exception {
		this.socket = soc;
		doProxy(soc);
	}
	
	private void doProxy(Socket socket) throws Exception {
		InputStream in = socket.getInputStream();
		OutputStream out = socket.getOutputStream();
		try {
			int ir;
			byte bytes[] = new byte[ProxyServer.BUFER_SIZE];
			byte[] rtnBuf = null;
			String UserStr = "";
			boolean recEnd = false;
			while (true) {
				try {
					if ((ir = in.read(bytes)) > 0) {
						for (int i = 0; i < ir; i++) {
							int c = bytes[i];
							UserStr = UserStr + (char) c;
							if ((char)c == '\n'){
								recEnd = true;
								break;
							}
						}
					} else if (ir < 0) {
						break;
					}
					if (recEnd){
						break;
					}
				} catch (InterruptedIOException e) {
					// System.out.println(" put server InterruptedIOException: "
					// + e);
				}
			}
			String[] user = UserStr.split("\r");
			//判断命令
			if (user.length > 0) {
				if (user[0].equals(ProxyServer.COMMAND_LINE_LOGIN)){
					if (user.length == 4) {
						if (this.userAuthorized == null){
								this.userAuthorized = new UserAuthorized(user[1],
								user[2], user[2], socket.getPort());
						}
						rtnBuf = this.userAuthorized.GetTokenString().getBytes();
						System.out.println(" recive login " + rtnBuf + ":addr:" + user[0]
						                   +":usename:" + user[1] + ":passwd:" + user[2]);
						out.write(rtnBuf, 0, ir);
						out.flush();
					}
				}else if (user[0].equals(ProxyServer.COMMAND_LINE_DISCONNECT)){
					System.out.println("recive disconnect ");
					//关闭所有连接
					if (ProxyServer.connections != null){
						Iterator conns = ProxyServer.connections.iterator();
				        while (conns.hasNext()) {
				            Connection c = (Connection) conns.next();
				            c.pleaseStop();
				        }
				        ProxyServer.connections.clear();
					}
					
					this.userAuthorized = null;
					this.socket.getInputStream().close();
					this.socket.getOutputStream().close();
					this.socket.close();

				}else{
					return;
				}
			}
		} catch (Exception e0) {
			Logs.log("Pipe exception: " + e0);
		}

	}
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}

}

⌨️ 快捷键说明

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