2016-06-24 20 views
0

Meine Anwendung ist eine einfache WiFi Direct-Chat. Ich kann zwei Geräte verbinden, aber ich weiß nicht, wie ich eine Zeichenfolge (nicht eine Datei) auf beiden Seiten (nicht nur von Client zu Server wie developer example) senden und empfangen sollte In beiden Seiten: Ich will nur ein EditText und eine Schaltfläche, die beim Klicken sendet EditText.getText() auf die andere Seite
Wenn jemand vollständigen Code hat, senden Sie mir bitte einen Link. Vielen DankSenden und empfangen Zeichenfolge auf beiden Client-und Server-Seiten mit WiFi Direct

Antwort

0

Android WiFiDirectServiceDiscovery sample project das tut:

package com.example.android.wifidirect.discovery; 

import android.os.Handler; 
import android.util.Log; 

import java.io.IOException; 
import java.io.InputStream; 
import java.io.OutputStream; 
import java.net.Socket; 

/** 
* Handles reading and writing of messages with socket buffers. Uses a Handler 
* to post messages to UI thread for UI updates. 
*/ 
public class ChatManager implements Runnable { 

    private Socket socket = null; 
    private Handler handler; 

    public ChatManager(Socket socket, Handler handler) { 
     this.socket = socket; 
     this.handler = handler; 
    } 

    private InputStream iStream; 
    private OutputStream oStream; 
    private static final String TAG = "ChatHandler"; 

    @Override 
    public void run() { 
     try { 

      iStream = socket.getInputStream(); 
      oStream = socket.getOutputStream(); 
      byte[] buffer = new byte[1024]; 
      int bytes; 
      handler.obtainMessage(WiFiServiceDiscoveryActivity.MY_HANDLE, this) 
        .sendToTarget(); 

      while (true) { 
       try { 
        // Read from the InputStream 
        bytes = iStream.read(buffer); 
        if (bytes == -1) { 
         break; 
        } 

        // Send the obtained bytes to the UI Activity 
        Log.d(TAG, "Rec:" + String.valueOf(buffer)); 
        handler.obtainMessage(WiFiServiceDiscoveryActivity.MESSAGE_READ, 
          bytes, -1, buffer).sendToTarget(); 
       } catch (IOException e) { 
        Log.e(TAG, "disconnected", e); 
       } 
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } finally { 
      try { 
       socket.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 

    public void write(byte[] buffer) { 
     try { 
      oStream.write(buffer); 
     } catch (IOException e) { 
      Log.e(TAG, "Exception during write", e); 
     } 
    } 

}