如何在给定 SSID 的情况下通过 wifi 打开套接字
How to open socket over wifi given an SSID
我想通过 Wi-Fi 打开连接。我当前的代码是:
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
returns true 表示操作成功。我不确定下一步该怎么做。
我的目标是打开一个套接字,我可以在其中通过刚刚连接到的网络进行自定义 I/O。我怎样才能打开这个网络的套接字?另外,我怎样才能确保我确实连接到网络(是否有我可以设置的BroadcastReceiver
)?
任何链接或文档都很棒,我不确定要在线搜索什么
您必须 运行 第一台设备上的服务器具有您喜欢的任何端口,在此示例中我尝试使用 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,则不需要循环。
为了进行简单的聊天,我们必须像这样打开输入流和输出流:
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 使用相同的方法。
我想通过 Wi-Fi 打开连接。我当前的代码是:
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
returns true 表示操作成功。我不确定下一步该怎么做。
我的目标是打开一个套接字,我可以在其中通过刚刚连接到的网络进行自定义 I/O。我怎样才能打开这个网络的套接字?另外,我怎样才能确保我确实连接到网络(是否有我可以设置的BroadcastReceiver
)?
任何链接或文档都很棒,我不确定要在线搜索什么
您必须 运行 第一台设备上的服务器具有您喜欢的任何端口,在此示例中我尝试使用 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,则不需要循环。 为了进行简单的聊天,我们必须像这样打开输入流和输出流:
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 使用相同的方法。