2013-02-28 122 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); 
相关问题