2017-07-11 100 views
0

我有兩個項目,一個Java 服務器和一個統一的客戶端用C#編寫。當我運行java服務器時,統一應用程序已成功連接到Windows。但是,當我嘗試在真正的Android設備上連接時,它無法正常工作。Android使用USB電纜連接到筆記本電腦。無法從Android設備連接到Java服務器

簡單的Java代碼

package main; 


import java.io.*; 
import java.net.ServerSocket; 
import java.net.Socket; 

public class Server1 { 

    private static final int portnumber=6422; 
    public static void main(String[] args){ 
     ServerSocket serverSocket =null; 
     try { 
      System.out.println("Server starts on port"+portnumber); 
      serverSocket = new ServerSocket(portnumber); 

      //Client connecting 
      System.out.println("Waiting for clients to connect"); 
      Socket socket = serverSocket.accept(); 
      System.out.println("A client has connected"); 

      System.out.println("server has ended"); 
     }catch (IOException e){ 
      e.printStackTrace(); 

     } 
    } 
} 

客戶端代碼

using UnityEngine; 
using System.Net.Sockets; 
using System.IO; 
using System; 
public class Client : MonoBehaviour 
{ 

    private bool socketready; 
    private TcpClient socket; 

    public void ConnectToServer() 
    { 

     //if already connected , ignore this function 
     if (socketready) 
      return; 

     //my laptop private ip address. 
     string host = "192.168.1.2"; 
     int port = 6422; 
     //create the socket 
     try 
     { 
      socket = new TcpClient(host, port); 
      socketready = true; 
     } 
     catch (Exception e) 
     { 
      print("socket error: " + e.Message); 
     } 
    }} 

團結我有按鈕(會叫ConnectToServer)。問題是,當我嘗試點擊該按鈕不能得到「一個客戶已連接「在java控制檯

在Android工作室它說:「socket error: Connection timed out

+1

將'Debug.Log'放入'ConnectToServer'函數以確保它在所有按鈕上被調用。 – Programmer

+0

該代碼適用於Windows – StepHan

+1

好的。我錯過了那部分。 *「Android使用USB電纜連接到筆記本電腦」* ...我認爲這不是很有用。您應該確保Android設備和運行Java服務器的計算機都連接到同一網絡。 – Programmer

回答

1

防火牆似乎阻擋來自Android設備的連接。只需add編譯的Java應用程序到防火牆例外列表,以確保它不會阻止和傳入的流量。


不相關,但您需要確保connect函數在另一個線程中完成。還要確保您的接收代碼也在另一個線程中完成。將接收代碼放入連接Thread也很好。

最後,請注意,您不能在另一個Thread中使用Unity的API。如果您使用另一個Thread的Unity API,則需要一種方法來執行主要Thread中的代碼。請看看我爲此製作的this包裝紙。

相關問題