2017-07-11 94 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包装纸。

相关问题