gtavirtualhosttcp.java
来自「是一款国外的网络游戏平台的源码*不是类似浩方那种虚拟局域网技术」· Java 代码 · 共 92 行
JAVA
92 行
/*
* 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 + =
减小字号Ctrl + -
显示快捷键?