Add client server dungeon helper app

master
sigonasr2 2 years ago
commit 823d344084
  1. 1
      .gitignore
  2. 2
      sig/.jvmopts
  3. 229
      sig/App.java
  4. BIN
      sig/Client$1.class
  5. BIN
      sig/Client.class
  6. BIN
      sig/Server.class
  7. BIN
      sig/system-hook-3.8.jar

1
.gitignore vendored

@ -0,0 +1 @@
.vscode

@ -0,0 +1,2 @@
--add-opens=java.base/java.util=ALL-UNNAMED
--add-opens=java.base/java.lang=ALL-UNNAMED

@ -0,0 +1,229 @@
import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Map.Entry;
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;
import lc.kra.system.keyboard.GlobalKeyboardHook;
import lc.kra.system.keyboard.event.GlobalKeyAdapter;
import lc.kra.system.keyboard.event.GlobalKeyEvent;
class Client {
// initialize socket and input output streams
private Socket socket = null;
private DataInputStream input = null;
private DataOutputStream out = null;
private static boolean run = true;
// constructor to put ip address and port
public Client(String address, int port)
{
GlobalKeyboardHook keyboardHook = new GlobalKeyboardHook(true); // Use false here to switch to hook instead of raw input
System.out.println("Global keyboard hook successfully started, press [escape] key to shutdown. Connected keyboards:");
for (Entry<Long, String> keyboard : GlobalKeyboardHook.listKeyboards().entrySet()) {
System.out.format("%d: %s\n", keyboard.getKey(), keyboard.getValue());
}
keyboardHook.addKeyListener(new GlobalKeyAdapter() {
@Override
public void keyPressed(GlobalKeyEvent event) {
try {
switch (event.getVirtualKeyCode()){
case GlobalKeyEvent.VK_RETURN:{
out.writeUTF("FOLLOW");
}break;
case GlobalKeyEvent.VK_NUMPAD8:
case GlobalKeyEvent.VK_UP:{
out.writeUTF("FORWARD");
}break;
case GlobalKeyEvent.VK_NUMPAD5:
case GlobalKeyEvent.VK_DOWN:{
out.writeUTF("BACKWARD");
}break;
case GlobalKeyEvent.VK_NUMPAD4:
case GlobalKeyEvent.VK_LEFT:{
out.writeUTF("LEFT");
}break;
case GlobalKeyEvent.VK_NUMPAD6:
case GlobalKeyEvent.VK_RIGHT:{
out.writeUTF("RIGHT");
}break;
case GlobalKeyEvent.VK_NUMPAD0:
case GlobalKeyEvent.VK_NUMPAD1:
case GlobalKeyEvent.VK_1:
case GlobalKeyEvent.VK_2:
case GlobalKeyEvent.VK_3:
case GlobalKeyEvent.VK_Z:{
out.writeUTF("FIGHT");
}break;
case GlobalKeyEvent.VK_NUMPAD3:
case 110:
case GlobalKeyEvent.VK_DELETE:{
out.writeUTF("CHILL");
}break;
}
} catch (IOException e) {
e.printStackTrace();
}
if (event.getVirtualKeyCode() == GlobalKeyEvent.VK_ESCAPE) {
run = false;
}
}
@Override
public void keyReleased(GlobalKeyEvent event) {
System.out.println(event);
}
});
// establish a connection
try {
socket = new Socket(address, port);
System.out.println("Connected");
// takes input from terminal
input = new DataInputStream(System.in);
// sends output to the socket
out = new DataOutputStream(
socket.getOutputStream());
}
catch (IOException u) {
System.out.println(u);
return;
}
// string to read message from input
String line = "";
// keep reading until "Over" is input
while (!line.equals("Over")) {
try {
line = input.readLine();
out.writeUTF(line);
}
catch (IOException i) {
System.out.println(i);
}
}
// close the connection
try {
input.close();
out.close();
socket.close();
keyboardHook.shutdownHook();
}
catch (IOException i) {
System.out.println(i);
}
}
public static void main(String args[])
{
Client client = new Client("127.0.0.1", 5000);
}
}
class Server
{
//initialize socket and input stream
private Socket socket = null;
private ServerSocket server = null;
private DataInputStream in = null;
Robot r;
private void PressKeyWithModifier(int modifier,int keycode) {
r.keyPress(modifier);
r.keyPress(keycode);
r.keyRelease(keycode);r.delay(100);
r.keyRelease(modifier);
}
// constructor with port
public Server(int port)
{
try {
r = new Robot();
} catch (AWTException e) {
e.printStackTrace();
}
// starts server and waits for a connection
try
{
server = new ServerSocket(port);
System.out.println("Server started");
System.out.println("Waiting for a client ...");
socket = server.accept();
System.out.println("Client accepted");
// takes input from the client socket
in = new DataInputStream(
new BufferedInputStream(socket.getInputStream()));
String line = "";
// reads message from client until "Over" is sent
while (!line.equals("Over"))
{
try
{
line = in.readUTF();
switch (line){
case "FOLLOW":{
PressKeyWithModifier(KeyEvent.VK_CONTROL,KeyEvent.VK_7);
}break;
case "FORWARD":{
}break;
case "BACKWARD":{
}break;
case "LEFT":{
}break;
case "RIGHT":{
}break;
case "FIGHT":{
}break;
case "CHILL":{
}break;
default:{
System.out.println("Unknown command: "+line);
}
}
}
catch(IOException i)
{
System.out.println(i);
break;
}
}
System.out.println("Closing connection");
// close connection
socket.close();
in.close();
}
catch(IOException i)
{
System.out.println(i);
}
}
public static void main(String args[])
{
Server server = new Server(5000);
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.
Loading…
Cancel
Save