2014-07-03 55 views
3

您好
我從http://developer.android.com/training/connect-devices-wirelessly/nsd.html下載了NsdCaht應用程序。當我嘗試連接兩個設備時,我收到異常。在android中的NsdChat套接字連接異常

異常

java.net.ConnectException: failed to connect to /192.168.1.144 (port 42289): connect failed: ECONNREFUSED (Connection refused) 
at libcore.io.IoBridge.connect(IoBridge.java:114) 
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192) 
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) 
at java.net.Socket.startupSocket(Socket.java:566) 
at java.net.Socket.<init>(Socket.java:225) 
at com.example.android.nsdchat.ChatConnection$ChatClient$SendingThread.run(ChatConnection.java:215) 
at java.lang.Thread.run(Thread.java:841) 
Caused by: libcore.io.ErrnoException: connect failed: ECONNREFUSED (Connection refused) 
at libcore.io.Posix.connect(Native Method) 
at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:85) 
at libcore.io.IoBridge.connectErrno(IoBridge.java:127) 
at libcore.io.IoBridge.connect(IoBridge.java:112) 

請給我的想法...

+0

嗯......有趣。於是我下載了NsdChat.zip並將其導入到一個新項目中。這很快。將應用程序安裝在同一網絡中的兩臺設備上。但是現在我不知道該怎麼辦?你能告訴我最好的按鈕點擊設備,我會看到,如果我做?目前沒有任何事情發生。 – greenapps

+0

只需等待,單擊按鈕並在logcat中看到許多紅線,就會突然開始工作,聊天消息將被傳輸。但過了一段時間,我只能向一個方向發送消息。也許這是一臺設備睡了一會兒的時間。 – greenapps

回答

0

我得到同樣的錯誤,在相當一段時間發現一部分工作後。然後一段時間後突然它連接上了,我可以發送消息到其他設備。在通過按下寄存器從兩個或更多設備進行服務廣播之後,android重命名一些服務以避免同名的衝突。一般來說,該服務在原始名稱前用括號中的數字命名,例如。 Nsdchat(90)。 因此,無論何時按下注冊按鈕,都會註冊一個具有不同名稱的服務,並將新端口分配給該服務。這會導致關閉前一個端口,但之前的服務名稱至今尚未註冊。因此,其他設備能夠看到與之關聯的先前服務名稱和端口,但無法連接到端口,因爲端口已關閉,因此會導致在發現主機時發生IOException。 因此,請嘗試重新連接到網絡,重新啓動應用程序,然後按註冊按鈕一次,以便每個設備將有一個服務,一個IP和一個可連接的端口。 希望這有助於。