2016-06-24 10 views
0

내 애플리케이션은 간단한 WiFi 직접 채팅입니다. 두 장치를 연결할 수 있지만 양쪽에서 문자열 (파일이 아닌)을 보내고받는 방법을 모르겠습니다. developer example과 같은 서버에서 서버로만이 아닙니다.

양면에서 : EditText와 버튼을 클릭하면 다른쪽에 EditText.getText()이 전송됩니다.
누구든지 전체 코드를 가지고 있다면 저에게 링크를 보내주십시오. 덕분에 많은WiFi Direct를 사용하여 클라이언트 측과 서버 측 모두에서 문자열을 보내고받습니다.

답변

0

안드로이드의 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); 
     } 
    } 

} 
관련 문제