2016-06-24 13 views
0

私のアプリケーションは簡単なWiFiダイレクトチャットです。私は2つのデバイスを接続することができますが、私は文字列(ファイルではなく)を両方の側で(developer exampleのようなクライアントからサーバーに)

のように両面で送受信する必要があるかどうかわかりません。 EditTextとボタンをクリックするとEditText.getText()が相手側に送信されます
誰かが完全なコードを持っている場合は、私にリンクを送ってください。おかげでたくさんのWiFi Directを使用してクライアント側とサーバー側の両方で文字列を送受信します

答えて

0

AndroidのWiFiDirectServiceDiscovery sample projectは、その処理を行います。

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); 
     } 
    } 

} 
関連する問題