5

私はしばらくこの問題に取り組んでいます。受信側のソケットを介してデバイスからデバイスにデータを送信しています。このデータをソケットからデバイス自体に送信する必要があります。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"/>
4

2 に答える 2

0

アドレス フィールドに null を送信してみてください。

Socket socket = new Socket(null, 1500);
于 2014-06-20T13:08:36.307 に答える
-1

書かれているコードを見ると意味がありません。ソケットから読み取り、すぐに available() をテストします。あなたはそれから読んだだけなので、おそらく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);
   }
于 2013-05-14T09:44:06.233 に答える