2016-03-13 27 views
1

我想通过Wi-Fi打开连接。我目前的代码是:如何通过无线网络打开套接字给定一个SSID

WifiConfiguration wifiConfig = new WifiConfiguration(); 
wifiConfig.SSID = String.format("\"%s\"", "MY_SSID"); 
wifiConfig.preSharedKey = String.format("\"%s\"", "MY_PASSWORD"); 

int netId = wifiManager.addNetwork(wifiConfig); 
if (netId != -1) { 
    wifiManager.enableNetwork(netId, true); 
} 

enableNetwork返回true表示操作成功。但我不确定接下来要做什么。

我的目标是打开一个套接字,我可以通过我刚刚连接的网络进行自定义I/O。我怎样才能打开这个网络的套接字?另外,如何确保我实际连接到网络(是否有BroadcastReceiver我可以设置)?

任何链接或文件将是真棒,我不知道在网上搜索

+0

'我想通过Wi-Fi打开连接。什么?你想连接哪两个'东西'? – greenapps

+0

到我添加的网络。我的android手机和网络中显示的代码 –

+0

要将手机连接到无线网络,您不需要插座。你的代码有什么问题?如果手机连接到无线路由器......那么是什么。我觉得这一切都很模糊。请更好地解释你的目标。 – greenapps

回答

3

您必须先运行设备上的服务器和你喜欢的,我在这个例子中尝试9000的任何端口:

try { 
    log("Waiting for client..."); 

    ServerSocket serverSocket = new ServerSocket(9000); 
    socket = serverSocket.accept(); 

    log("A new client Connected!"); 
} catch (IOException e) {} 

然后搜索该服务器在其他设备上的端口号为9000的这个例子是:

for (int i = 1; i <= 255; i++) { 
    String ip = range + i; 
    try { 
     log("Try IP: " + ip); 
     socket = new Socket(); 
     socket.connect(new InetSocketAddress(ip, 9000), 10); 

     log("Connected!"); 
     return true; 
    } catch (Exception e) {} 
} 

,如果你有你不需要循环服务器的ip。 和一个简单的聊天,你就必须打开一个InputStream和OutputStream这样的:

try { 
    outputStream = new DataOutputStream(socket.getOutputStream()); 
    inputStream = new BufferedReader(new InputStreamReader(socket.getInputStream())); 
} catch (IOException e1) { 
    log("Error: Connection is not stable, exit"); 
    shutdown(); 
} 

while (true) { 
    try { 
     String message = inputStream.readLine(); 
     if (message != null) { 
      log(message); 
     } 
    } catch (IOException e) {} 
} 

,并发送消息:

try { 
    String message = input.getText().toString() + "\n"; 
    outputStream.write(message.getBytes()); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

文件I/O用同样的方法。

+0

你能解释一下你是如何获得服务器设备的IP地址的?String ip = range + i'?我需要IP连接到服务器设备,但我不知道如何获得该设备的IP。如果我使用'主机名'而不是IP,则会引发异常'主机未解析:de:e8:38:16:d4:fb' –

+0

是否要在本地主机上获取IP?或在互联网上? – Yahya

+0

。感谢您的回复......我在方法wifip2pmanager.requestConnectionInfo() –

相关问题