2012-02-24 52 views
-1

我正在研究一個應用程序,我需要建立Android和PC之間的通信以通過Wi-Fi傳輸一些數據。我可以通過無線網絡在兩臺PC之間進行通信。所以PC端的代碼已經準備就緒。我需要一個從Android端使用Wifi的參考。類似於藍牙聊天的內容很有幫助。我能夠掃描Android中存在的Wifi網絡,但無法繼續進行。 乾杯Android和PC之間的Wifi聊天

+1

你的問題太模糊。你想在android和PC之間轉換什麼? PC運行什麼操作系統?你需要一個可靠的(TCP)連接還是一個不可靠但快速的(UDP)連接?很難從「PC端」獲取代碼並立即將其用於Android,即使它能夠識別出「沒問題,這個連接來自手機」,也需要進行一些更改。 – Dororo 2012-02-24 13:08:28

+0

雅我需要一個TCP連接。我已經使用TCP建立了PC和藍牙之間的連接。而來自PC端的代碼是一個等待客戶端連接的服務器代碼。我想把我的android作爲客戶端來工作。我正在傳輸簡單協議和圖像等數據。 PC中的操作系統是windows。 – ragz 2012-02-24 13:32:37

回答

0

不知道你想達到什麼樣的東西很難做到更具體,但是這個片段會收到一個短暫的數據突發。

 DatagramSocket serverSocket = new DatagramSocket(PORTNUMBER); 
     byte[] receiveData = new byte[50]; 

     DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); 
     serverSocket.setSoTimeout(5000); 
     serverSocket.receive(receivePacket); 
        serverSocket.close(); 
1

這一個接收文件

private String ReceiveFile() { 

    try { 
     ServerSocket socket = new ServerSocket(port); 
     socket.setSoTimeout(5000); 
     Socket os = null; 

     try { 
      os = socket.accept(); 
     } catch (SocketTimeoutException t) { 
      if (!socket.isClosed()) socket.close(); 
      return "TIMEOUT"; 
     } 

     InputStream bos = os.getInputStream(); 
     FileOutputStream fos = new FileOutputStream(FILENAME); 
     DataOutputStream bw = new DataOutputStream(fos); 

     int Total = 0; 
     byte[] buffer = new byte[4096]; 
     int read; 
     while (true) { 
      read = bos.read(buffer); 
      if (read <= 0) break; 
      bw.write(buffer, 0, read); 
      Total = Total + read; 
     } 

     if (!socket.isClosed()) socket.close(); 
     return "SUCCESS"; 
    } catch (Exception e) { 
     e.printStackTrace(); 
     return "FAILURE"; 
    } 
}