代码之家  ›  专栏  ›  技术社区  ›  Achiever

两个Wifi设备之间的数据传输

  •  6
  • Achiever  · 技术社区  · 14 年前

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

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

    2 回复  |  直到 14 年前
        1
  •  19
  •   Dirk Jäckel    14 年前

    要在两个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
  •  3
  •   halfer Jatin Pandey    8 年前

    对于2台设备之间的数据传输,可以使用“TCP”协议通过wifi进行。客户端和服务器之间的连接需要3件事

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

    为了更快地通过wifi传输数据,可以使用“WifiDirect” 这是一种“p2p”连接。从而这将在没有中间(套接字)的情况下将数据从一个设备传输到另一个设备。例如,请参阅谷歌开发者中的此链接 wifip2p P2P Connection with Wi-Fi

    在Github中获取示例 WifiDirectFileTransfer