2011-09-15 58 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
    相關問題