将键盘按键发送到另一台计算机?

时间:2013-05-12 00:48:26

标签: java keyboard

我想知道我是否可以获得帮助,或者找到能够发送键盘按键并在另一台计算机上接收它们的程序。我想用它来与电脑上的朋友一起玩多人Flash播放器游戏。我知道有一些程序像“logmein”,但两个用户不能同时使用键盘。 (当我按一个键时,计算机用户不能同时按下一个键,因为它不会响应。)我只知道java,我对它很新手。我猜我是否需要写它不得不通过端口或网络服务器发送信息。我想知道你对这个项目的意见和建议,谢谢你们。

1 个答案:

答案 0 :(得分:2)

基本上你要找的是一个聊天室计划?你有没有尝试过研究mIRC? mIRC是一个免费的互联网中继聊天。该计划的要求究竟是什么?它必须有一定的尺寸吗?您和您的朋友正在玩的这些Flash游戏是否会占用您的完整计算机屏幕?

构建程序需要Web服务器(任何具有Internet访问权限的计算机都可以),您必须打开网络上的端口才能允许流量通过。

java中的基本服务器看起来像这样: 请注意,在第一次连接后,此“服务器”将关闭连接。

import java.net.ServerSocket;
import java.net.Socket;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Server
{
private static ServerSocket serverSocket;
private static Socket clientSocket;
private static BufferedReader bufferedReader;
private static String inputLine;
public static void main(String[] args)
{
    // Wait for client to connect on 63400
    try
    {

        serverSocket = new ServerSocket(63400);
                    while(true){
        clientSocket = serverSocket.accept();
        // Create a reader
        bufferedReader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
        // Get the client message
        while((inputLine = bufferedReader.readLine()) != null)
                    {System.out.println(inputLine);}
    serverSocket.close();
            System.out.println("close");
                    }
            }
    catch(IOException e)
    {
        System.out.println(e);
    }
}
}

客户几乎是一样的:

import java.net.Socket;
import java.io.PrintWriter;
public class client
{
private static Socket socket;
private static PrintWriter printWriter;
public static void main(String[] args)
{
    try
    {
                   //change "localhost" to the ip address that the client is on, and this number to the port
        socket = new Socket("localhost",63400);
        printWriter = new PrintWriter(socket.getOutputStream(),true);
        printWriter.println("Hello Socket");
    }
    catch(Exception e)
    {
        System.out.println(e);
    }
}
}

如果我没弄错,printWriter是一个16位操作,并且为了减少延迟,如果你只是发送文本,那么你可能想要使用printStream()。我相信这可能会更快一些。