2013-05-12 101 views
0

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

+0

难道你不能只存储哪些按键作为布尔值,然后通过udp或tcp以字节形式发送它们? – Nikki 2013-05-12 00:51:52

+0

会有滞后吗?而且我不知道是否生病了。这正是我想要做的事。 – 2013-05-12 01:01:17

+0

Java代码本身不会引入延迟.......您的互联网连接另一方面..... – Nikki 2013-05-12 01:16:26

回答

2

基本上你在找什么是聊天室程序?你有没有试过看mIRC? mIRC是一个免费的互联网接力聊天。该计划的要求究竟是什么?有一定的规模吗?这些Flash游戏是你和你的朋友在玩整个电脑屏幕吗?

构建一个程序需要一个网络服务器(任何有互联网接入的计算机都可以),并且您必须打开网络上的端口以允许流量通过。

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()。我相信这可能会更快一点。

相关问题