2013-01-17 164 views
1

我以前曾使用Kryonet進行1對1通信,並且它工作得很好。Kryonet在客戶端2連接後立即斷開客戶端1

現在我正在做一個更「標準」的項目,我們將有1個服務器和幾個客戶端連接到它。

我遇到的問題是在標題中描述:客戶端1連接,沒有問題。然後我要求客戶端2連接並立即斷開客戶端1。不知何故服務器不想保持多個同時連接。

有幾次,我們設法有2連接,然後每當第三次連接其他滴。

在幾個不同的設備上運行所有ICS +(星系連接,tab2,SGS3)。

我正在使用的代碼是非常喜歡的例子:

服務器端:

server = new Server(); 
    ServiceData.RegisterKryo(server.getKryo()); 
    server.addListener(new MyServerListener()); 
    try { 
     server.bind(ServiceData.SERVER_PORT_TCP); 
     server.start(); 
    } catch (IOException e) { 
     Log.e(TAG, "IOException. Failed to start server. " + e.getMessage()); 
     MyServer.this.stopSelf(); 
    } 

然後客戶端:

final String ip = intent.getExtras().getString(KEY_SERVER_IP); 
listener = new MyClientListener(); 
client = new Client(); 
client.start(); 
ServiceData.RegisterKryo(client.getKryo()); 
client.addListener(listener); 
try { 
    client.connect(5000, ip, ServiceData.SERVER_PORT_TCP); 
} catch (IOException e) { 
    Log.e(TAG, "IOException. Failed to start client. " + e.getMessage() + "\n"); 
    e.printStackTrace(); 
    MyClient.this.stopSelf(); 
} 

此刻的聽衆只是Log.v(TAG, "something happened);,我也啓用了Kryonet庫中的所有日誌與com.esotericsoftware.minlog.Log.set(com.esotericsoftware.minlog.Log.LEVEL_TRACE);,以便我可以看到它何時連接以及何時斷開連接。

我收到斷開時兩個不同的消息:

DEBUG: [kryonet] Connection 3 timed out. 

DEBUG: [kryonet] Unable to read TCP from: 

真的不知道什麼是對這裏的任何幫助將不勝感激。

編輯: 多一點信息: 我已經意識到INFO: [kryonet] Connection 3 connected: /192.168.0.104和我的聽衆之間的接收connected回調,它採取約9秒!很奇怪。

回答

0

誰可能會遇到同樣的問題。

顯然,這是一個Android的限制(可能是強加,因爲它是一個移動設備)

我剛搬來的Server代碼到一個正常的Java應用程序.jar,讓Android的客戶端連接到PC,這一切現在工作正常。直到現在,測試6個設備連接沒有問題。

+0

@ Budius你能分享你的應用程序的源代碼嗎?我想創建一個連接到服務器的應用程序3g – letroll

+0

嗨@letroll我什至不再在那個地方工作。但代碼示例等可以在圖書館網站上找到:https://code.google.com/p/kryonet/ – Budius

+0

感謝您的鏈接,但沒有隻適用於Android的例子,所以我已經刪除了所有的鞦韆的東西,並用小部件替代它們。但我的示例項目不起作用:( – letroll