在2个Android设备之间传输数据

时间:2013-09-02 13:00:23

标签: android android-sharing

我想写一个应用程序在同一个wifi网络上的2个Android设备之间传输数据,就像有一个共享文件夹一样。

我该怎么做?

由于

编辑(我的解决方案):

我的服务器等待请求

private boolean startServer() {
    try {
        server = new ServerSocket(port);
    } catch (IOException ex) {
        ex.printStackTrace();
        return false;
    }
    return true;
}

public void runServer() {
    while (this.go) {
        try {
            Log.d("BurgerClub", "Server in attesa di richieste");
            Socket s1 = server.accept();

            OutputStream s1out = s1.getOutputStream();
            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(
                    s1out));

            BufferedReader br = new BufferedReader(new FileReader(this.path));
            String counter = br.readLine();
            counter = counter != null ? counter : "000";

            br.close();
            bw.write(counter);

            bw.close();
            s1.close();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}

我的客户端(Runnable对象)

public void run() {

    try {

        this.openConnection();

        // Se il socket è connesso
        if( !this.s1.isClosed() ) {

            InputStream is = this.s1.getInputStream();
            BufferedReader dis = new BufferedReader(new InputStreamReader(is));

            line = dis.readLine();

            if( !this.previousCounter.equals(line.trim()) ) {
                ((BurgerClub_MonitorActivity) counterContext).runOnUiThread(new Runnable() {  
                    @Override
                    public void run() {
                        TextView edit = (TextView)(((BurgerClub_MonitorActivity) counterContext).findViewById(R.id.textActionCounter));
                        edit.setText(line);
                    }
                });

                this.previousCounter = line.trim();
            }

            dis.close();
        }
    } catch (ConnectException connExc) {
        connExc.printStackTrace();
    } catch (IOException ex) {
        ex.printStackTrace();
    } catch (Throwable ex) {
        ex.printStackTrace();
    }

2 个答案:

答案 0 :(得分:3)

一台设备需要作为服务器,另一台设备需要作为客户端。

基本流程必须属于这种类型:

  1. 服务器设备打开一个套接字并监听它。
  2. 服务器设备广播它正在侦听的本地IP和端口。
  3. 客户端设备接收广播并启动连接。
  4. 执行数据传输。

答案 1 :(得分:0)