6

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

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

4

2 回答 2

19

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

示例取自这里

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

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();
}
于 2012-08-18T10:58:40.643 回答
3

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

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

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

在 Github WifiDirectFileTransfer中获取示例

于 2015-07-10T13:30:31.590 回答