2013-02-28 126 views
4

我現在正在關注此問題一段時間。我正在接收端通過套接字將數據從設備發送到設備,我必須將此數據從套接字發送到設備本身。 localhost/127.0.0.1/10.0.0.2或WiFi地址不起作用。將套接字連接到設備上的本地地址

如何在設備上將數據從套接字發送到localhost:port

try 
{ 
    Socket socket = new Socket(InetAddress.getLocalHost(), 1500); 
    InputStream is = s.getInputStream(); 
    OutputStream os = socket.getOutputStream(); 
    int bufferSize = 1024; 
    byte[] buffer = new byte[bufferSize]; 
    int len = 0; 
    while ((len = is.read(buffer)) > 0) 
    { 
     if(is.available() > 1024){ 
      os.write(buffer); 
     Log.i(TAG, "localSocket writing: " + buffer.length); 
     } 


     try 
     { 
      Thread.sleep(100); 
     } 
     catch (InterruptedException e) 
     { 
      Log.e(TAG, "LocalSocketThread" + e.toString()); 
     } 
    } 
} 

和我的清單權限:

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.CAMERA" /> 
<uses-permission android:name="android.permission.STORAGE" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> 
+0

數據到達端口44444,現在我想通過套接字轉發數據到本地主機。我試圖連接到「10.0.2.2」,「127.0.0.1」,「本地主機」和自己的無線地址與DatagramSocket和套接字到這個地址。我知道他們是設備的環回地址,但我怎樣才能連接到他們? – 2013-02-28 14:07:11

+1

請發佈你的'AndroidManifest.xml'和你的* full *方法代碼。嘗試一條線不構成嘗試。 – Phil 2013-02-28 14:10:27

+0

你的清單?你要求什麼權限? – Phil 2013-02-28 14:21:04

回答

-1

你的代碼看,因爲它是寫的,是沒有意義的,你從套接字讀取並立即您測試可用的()。你只是從它讀那麼很可能它會返回0

while ((len = is.read(buffer)) > 0) 
{ 
    // this is what makes no sense 
    if (is.available() > 1024) os.write(buffer); 
    // what you probably want to do is 
    // Even this test is not necessary because you already test in the while loop 
    if (len > 0) 
    { 
     os.write(buffer, 0, len); 
     Log.i(TAG, "localSocket writing: " + len); 
    } 
0

嘗試發送空到地址欄:

Socket socket = new Socket(null, 1500); 
相關問題