【问题标题】:Data transfer between two Wifi devices两个 Wifi 设备之间的数据传输
【发布时间】:2012-08-17 08:25:24
【问题描述】:

我在 Google 中搜索过。在 Android 2.2 和 sdk 8 中,如何在 Android 的列表中使用 SSID?

通过使用 SSID 应该以编程方式获取特定的启用 wifi 的设备属性。有了这个帮助,应该可以在两个支持 Wifi 的 Android 设备之间传输数据。

【问题讨论】:

    标签: android android-wifi


    【解决方案1】:

    要在两台 Android 设备之间以有意义的方式发送数据,您需要使用 TCP 连接。为此,您需要 IP 地址和其他设备正在侦听的端口。

    示例取自here

    对于服务器端(监听端),您需要一个服务器套接字:

    try {
            Boolean end = false;
            ServerSocket ss = new ServerSocket(12345);
            while(!end){
                    //Server is waiting for client here, if needed
                    Socket s = ss.accept();
                    BufferedReader input = new BufferedReader(new InputStreamReader(s.getInputStream()));
                    PrintWriter output = new PrintWriter(s.getOutputStream(),true); //Autoflush
                    String st = input.readLine();
                    Log.d("Tcp Example", "From client: "+st);
                    output.println("Good bye and thanks for all the fish :)");
                    s.close();
                    if ( STOPPING conditions){ end = true; }
            }
    ss.close();
    
    
    } catch (UnknownHostException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
    } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
    }
    

    对于客户端,您需要一个连接到服务器套接字的套接字。请将“localhost”替换为远程 Android 设备的 IP 地址或主机名:

    try {
            Socket s = new Socket("localhost",12345);
    
            //outgoing stream redirect to socket
            OutputStream out = s.getOutputStream();
    
            PrintWriter output = new PrintWriter(out);
            output.println("Hello Android!");
            BufferedReader input = new BufferedReader(new InputStreamReader(s.getInputStream()));
    
            //read line(s)
            String st = input.readLine();
            //. . .
            //Close connection
            s.close();
    
    
    } catch (UnknownHostException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
    } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
    }
    

    【讨论】:

      【解决方案2】:

      通过 wifi 在 2 个设备之间传输数据可以使用“TCP”协议完成。客户端和服务器之间的连接需要 3 件事

      1. 使用 NSD 管理器,客户端设备应获取服务器/主机 IP 地址。
      2. 使用 Socket 向服务器发送数据。
      3. 客户端应将其 IP 地址发送到服务器/主机以进行双向通信。

      为了通过 wifi 更快地传输数据,可以使用“WifiDirect”来完成 这是一个“p2p”连接。这样这将在没有中间(套接字)的情况下将数据从一个设备传输到另一个设备。例如,在 google 开发者wifip2pP2P Connection with Wi-Fi 中查看此链接。

      在 Github WifiDirectFileTransfer中获取样本

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多