Android 远程通信实现指南:使用 Socket 进行 TCP 通信
要让 Android 程序实现远程通信,可以使用网络通信技术,例如使用 Socket 实现 TCP 或 UDP 通信,或使用 HTTP 协议进行网络通信。
以下是一个使用 Socket 实现 TCP 通信的示例代码,其中包括客户端和服务器端的代码:
客户端代码:
public class TCPClient {
private static final String SERVER_IP = "192.168.0.1"; // 服务器 IP 地址
private static final int SERVER_PORT = 1234; // 服务器端口号
public static void main(String[] args) {
Socket socket = null;
try {
// 创建 Socket 对象,指定服务器 IP 地址和端口号
socket = new Socket(SERVER_IP, SERVER_PORT);
// 获取输出流,向服务器发送数据
OutputStream os = socket.getOutputStream();
os.write("Hello, server!".getBytes());
// 获取输入流,接收服务器返回的数据
InputStream is = socket.getInputStream();
byte[] buffer = new byte[1024];
int len = is.read(buffer);
String reply = new String(buffer, 0, len);
System.out.println("Received from server: " + reply);
} catch (IOException e) {
e.printStackTrace();
} finally {
// 关闭 Socket 连接
if (socket != null) {
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
服务器端代码:
public class TCPServer {
private static final int SERVER_PORT = 1234; // 服务器端口号
public static void main(String[] args) {
ServerSocket serverSocket = null;
try {
// 创建 ServerSocket 对象,监听指定端口号的连接请求
serverSocket = new ServerSocket(SERVER_PORT);
System.out.println("Server started. Listening on port " + SERVER_PORT + "...");
while (true) {
// 等待客户端连接请求,如果有客户端连接,则创建一个 Socket 对象
Socket socket = serverSocket.accept();
System.out.println("Client connected. Remote address: " + socket.getRemoteSocketAddress());
// 获取输入流,接收客户端发送的数据
InputStream is = socket.getInputStream();
byte[] buffer = new byte[1024];
int len = is.read(buffer);
String request = new String(buffer, 0, len);
System.out.println("Received from client: " + request);
// 获取输出流,向客户端发送数据
OutputStream os = socket.getOutputStream();
os.write("Hello, client!".getBytes());
// 关闭 Socket 连接
socket.close();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
// 关闭 ServerSocket 连接
if (serverSocket != null) {
try {
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
原文地址: https://www.cveoy.top/t/topic/lZPK 著作权归作者所有。请勿转载和采集!