gtavirtualplayerudp.java
来自「是一款国外的网络游戏平台的源码*不是类似浩方那种虚拟局域网技术」· Java 代码 · 共 88 行
JAVA
88 行
/*
* 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.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 GTAVirtualPlayerUDP extends Thread{
public static GTAVirtualPlayerUDP instance;
private DatagramSocket virtualUDPPlayerSocket;
private DatagramSocket virtualUDPSenderSocket;
private int listenPort = 2350;
private int sendPort = 2351;
private byte[] udpData = new byte[256];
private boolean initial = true;
public static GTAVirtualPlayerUDP getInstance() throws IOException{
if (instance == null){
instance = new GTAVirtualPlayerUDP();
}
return instance;
}
public static void clearInstance(){
if (instance != null){
if (instance.virtualUDPPlayerSocket != null)
instance.virtualUDPPlayerSocket.close();
if (instance.virtualUDPSenderSocket != null)
instance.virtualUDPSenderSocket.close();
instance = null;
}
}
public GTAVirtualPlayerUDP() throws IOException{
virtualUDPPlayerSocket = new DatagramSocket();
// listenPort = 2351;
// sendPort = 2350;
start();
}
public void run(){
byte[] buffer = new byte[256];
DatagramPacket p = new DatagramPacket(buffer, buffer.length);
try {
virtualUDPPlayerSocket = new DatagramSocket(listenPort);
while (true){
// During gameplay take all UDP Packets recieved from game
// and send them to remote player
virtualUDPPlayerSocket.receive(p);
Proxy.getInstance().sendUDPHostData(Proxy.getByteOffset(p.getData(),0,p.getLength()));
//System.out.println("Sending UDP Game data over proxy");
}
} catch (IOException ioe){
return;
}
}
public void sendUDPDataToGame(byte[] data) throws IOException {
if (initial){
initial = false;
virtualUDPPlayerSocket.connect(InetAddress.getByName("localhost"), sendPort);
}
try {
Thread.sleep(1);
DatagramPacket p = new DatagramPacket(data,data.length);
virtualUDPPlayerSocket.send(p);
//System.out.println("Sending UDP Game Data to game");
} catch (InterruptedException ie){
return;
}
}
public void processVPlayerUDP(byte[] data) throws IOException {
sendUDPDataToGame(data);
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?