2011-09-15 60 views
2

我做了一个java程序只是为了好玩这个程序允许您使用的第一台计算机的鼠标来控制计算机秒鼠标。所以每次鼠标移动时,光标的x和y都会发送到客户端应用程序。然后使用机器人类来移动鼠标。现在我正在使用套接字进行通信,它真的很慢什么是一种更好的方式来做到这一点,任何帮助都会有所帮助。如果可能的话,请提供一些代码 感谢什么是在两个应用程序之间进行通信的最佳和最快的方式?

+0

嘛,哪里缓慢从何而来?基准! – 2011-09-15 06:57:54

+0

...标记为jsp?这个* other *应用程序,是基于网络的吗? –

+0

哎呀对不起没有包换JSP误 –

回答

5

如果这两个应用程序现场在不同的虚拟机,然后通过套接字通信是一个非常不错的办法。

如果实在是太慢了,你可以使用UDP协议,而不是TCP/IP

  • 看看你的服务器/客户端代码考虑

    • ,性能可能会出现死亡。

    考虑到你这个答案评论:

    当你发送字节通过套接字,如果编码鼠标位置byte值,而然后String性能会有所提高:

    int x = getX(); 
    int y = getY(); 
    // let's assume we have a 16Bit/2Byte range for both values (practica) 
    byte[] message = new byte[4]; 
    message[0] = (byte) (x >> 8) & 0xff; 
    message[1] = (byte) x & 0xff; 
    message[2] = (byte) (y >> 8) & 0xff; 
    message[3] = (byte) y & 0xff; 
    sendViaSocket(message); 
    

    (它开始,并与一些魔术结束,则点是编码)

  • +0

    显示我们从您发送/接收方法的一些代码 - 有可能是*改进的余地* –

    +0

    我不知道这甚至是一个有效的问题,但我依然会问。什么,我几乎做的是发送x和y的字符串客户端,然后解析字符串,鼠标移动到指定的x和y这是一个很好的形式给出,还是有一个更好? –

    1

    我猜套接字是你最好的选择。你可以尝试研究关于JFS(Java的快速Sockets)的更多信息是从拉科鲁尼亚在西班牙大学的一个项目,但我不知道他们是如何走多远吧。更多信息here

    +0

    谢谢指出,我会研究它 –

    0

    有两台机器之间的进程间通信许多方面 - 但我不认为任何人会比原始套接字更快,将鼠标事件工作:

    1. 使用JMS队列
    2. 使用DB
    3. 使用WS
    相关问题