要構建代理,首先在小部件將與之通信的端口上創建一個ServerSocket,然後開始接受它的接受連接。
隨着新的連接進來,創建一個新的Socket到PHP服務器。然後你必須將輸入從一個輸入到另一個的輸出,反之亦然。
這是一個通用的代理。對於您的情況,您必須添加一些邏輯來檢測連接是否已經存在(可能使用cookie),然後重新使用現有的套接字而不是創建新的套接字。
不幸的是,解析輸入並獲得協議以匹配php所做的工作將會有點麻煩。
(編輯添加的例子)
這裏有一個準系統一般代理例子,讓你開始。運行此操作,然後將瀏覽器指向localhost。
public class Proxy {
public static void main(String args[]) throws Exception {
ServerSocket server = new ServerSocket(80);
Socket browser = server.accept();
Socket remote = new Socket("google.com", 80);
pipe(browser.getInputStream(), remote.getOutputStream());
pipe(remote.getInputStream(), browser.getOutputStream());
remote.close();
server.close();
}
private static void pipe(InputStream in, OutputStream out) throws IOException {
while(in.available() == 0) {
Thread.yield();
}
while(in.available() > 0) {
int data = in.read();
System.out.write(data);
out.write(data);
}
}
}
的工作解決方案將需要多線程(或異步)和,而不是僅僅通過管道的服務器之間的數據,你必須在那裏得到和檢查,然後決定是否需要打開一個新的套接字或重新使用現有的。
我認爲你是對的。代理可能適合你。給它一個鏡頭,並在這裏發佈你的代碼,如果你有問題。 –
您是否有任何包含Java代理實現的鏈接?我沒有得到直接的鏈接或可能是關鍵字不正確使用。謝謝 – fatherazrael
我會用一些代理信息添加一個答案 –