📄 gtavirtualhosttcp.java
字号:
/*
* Created on Feb 15, 2006
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package org.GTADS.proxy;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.*;
/**
* @author sday
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class GTAVirtualHostTCP extends Thread {
public static GTAVirtualHostTCP instance;
private int virtualHostPort = 2301;
private ServerSocket virtualHostListenSocket;
private Socket virtualHostConnection;
protected Socket virtualGameConnectionSocket;
private byte[] tcpData = new byte[255];
public static GTAVirtualHostTCP getInstance(){
if (instance == null){
instance = new GTAVirtualHostTCP();
}
return instance;
}
public static void clearInstance(){
if (instance != null){
try {
if (instance.virtualHostListenSocket != null)
instance.virtualHostListenSocket.close();
if (instance.virtualHostConnection != null)
instance.virtualHostConnection.close();
if (instance.virtualGameConnectionSocket != null)
instance.virtualGameConnectionSocket.close();
} catch (IOException ioe){
return;
}
instance.stop();
instance = null;
}
}
public GTAVirtualHostTCP() {
start();
}
public void run(){
// Sit there and listen
try {
virtualHostListenSocket = new ServerSocket(virtualHostPort);
virtualHostConnection = virtualHostListenSocket.accept();
while (true) {
tcpData = new byte[3000];
DataInputStream din = new DataInputStream(virtualHostConnection.getInputStream());
int p = din.read(tcpData);
System.out.println("From Game:");
Proxy.displayByte(Proxy.getByteOffset(tcpData,0,p));
System.out.println();
byte[] tempByte = Proxy.getByteOffset(tcpData,0,p);
Proxy.getInstance().sendTCPClientData(tempByte);
System.out.println("Sending data through proxy");
}
} catch (IOException ioe){
return;
}
}
public void processVHostTCP(byte[] data) throws IOException {
// When an incoming connection for a player happens
// Handle it here
if (virtualGameConnectionSocket == null){
virtualGameConnectionSocket = new Socket(InetAddress.getByName("localhost"), 2300);
}
DataOutputStream dout = new DataOutputStream(virtualGameConnectionSocket.getOutputStream());
dout.write(data,0,data.length);
dout.flush();
System.out.println("Sending data to local game");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -