2011-12-19 59 views
2

我有一臺運行在我的筆記本電腦上的非常簡單的Java服務器。另一方面,我有我的平板電腦與一個非常簡單的客戶端連接到我的服務器,但它不工作。 兩者都在同一無線網絡上運行。服務器示例 ServerSocket serverSocket = null; 套接字套接字=空; DataInputStream dataInputStream = null; DataOutputStream dataOutputStream = null;如何使用套接字將Android移動設備上的移動應用程序連接到筆記本電腦服務器?

try { 
     serverSocket = new ServerSocket(8888); 
     System.out.println("Listening :8888"); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    while(true){ 
     try { 
      socket = serverSocket.accept(); 
      dataInputStream = new DataInputStream(socket.getInputStream()); 
      dataOutputStream = new DataOutputStream(socket.getOutputStream()); 
      System.out.println("ip: " + socket.getInetAddress()); 
      System.out.println("message: " + dataInputStream.readUTF()); 
      dataOutputStream.writeUTF("Hello!"); 

簡單的客戶端代碼:

mysock = new Socket(server_adress, port_number); 

香港專業教育學院嘗試設置清單WIFI權限。試圖關閉電腦防火牆。 有什麼我應該知道的無線連接如何工作,可能會阻止連接?

在此先感謝

+0

是什麼在你的客戶端'server_adress'的價值? – Moyshe 2011-12-19 14:02:27

+0

我目前的ip取自cmd行。 10.101.224.119 – Z3phs 2011-12-19 14:03:33

+0

我會嘗試連接一些確認的服務器(谷歌?),然後我會嘗試使用外部和經過驗證的良好軟件(例如Apache,XAMPP)連接我自己的筆記本電腦,以確保連接一切正常,尋址,防火牆等。如果這將工作,我會嘗試連接我自己的服務器。你嘗試過這種原始的調試方法嗎? – Moyshe 2011-12-19 14:08:31

回答

0

您需要爲INTERNET設置權限。

<uses-permission android:name="android.permission.INTERNET"></uses-permission> 

客戶端:

String adresaServer = "192.168.4.120"; 

     int PORT = 8095; 
     Socket socket = null; 

     DataInputStream in = null; 

     try { 
      socket = new Socket(); 
      SocketAddress adr = new InetSocketAddress(adresaServer, PORT); 
      socket.connect(adr, 1500); 

      out = new DataOutputStream(socket.getOutputStream()); 
      in = new DataInputStream(socket.getInputStream()); 
      out.flush(); 
     } catch (SocketTimeoutException e) { 
      System.err.println(" Error at CONNECTINGG: \n" + e); 

     } catch (UnknownHostException e) { 
      System.err.println(" Serverul nu poate fi gasit \n" + e); 
      System.exit(1); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 

     } 
     out.writeFloat(sensors.getValueGyroZ()); 
      } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } catch (Exception e) { 

        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 

服務器端:

ServerSocket serverSocket = null; 

     try { 
      serverSocket = new ServerSocket(PORT); 
      serverSocket.setSoTimeout(1600000); 

      System.out.println(" Waiting a client ... "); 
      Socket socket = serverSocket.accept(); 
      int i = 0; 
      DataOutputStream out = new DataOutputStream(
        socket.getOutputStream()); 



      while (true) { 


       DataInputStream in = new DataInputStream(
         socket.getInputStream()); 



      System.out.println(String.valueOf(in.readFloat())); 

      } 

     } catch (IOException e) { 
      System.err.println(" Eroare IO \n" + e); 


     } finally { 
      try { 
       serverSocket.close(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     } 

    } 
+0

<使用權限的android:name =「android.permission.INTERNET」/>是否已經有它呢?是的,這已經在清單中,仍然沒有工作:( – Z3phs 2011-12-19 14:06:58

+0

告訴我,如果這項工程...如果不是我可以發佈我的服務器和客戶端之一,因爲我只是做了這樣一個應用 – 2011-12-19 14:08:40

+0

它沒有隊友:(你連接你喜歡我想我的?你的服務器運行在你的臺式機/筆記本電腦,然後連接到它通過移動設備上的客戶端? – Z3phs 2011-12-19 14:09:53

相關問題