下面是一个使用Android Socket进行通信的简单示例,包括客户端和服务器端的代码:
客户端代码:
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
public class ClientSocketExample {
public static void main(String[] args) {
try {
// 创建Socket对象,指定服务器的IP地址和端口号
Socket socket = new Socket("服务器IP地址", 8888);
// 获取输出流对象,向服务器发送数据
OutputStream outputStream = socket.getOutputStream();
outputStream.write("Hello Server".getBytes());
// 关闭Socket和输出流
outputStream.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
服务器端代码:
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerSocketExample {
public static void main(String[] args) {
try {
// 创建ServerSocket对象,监听指定端口号
ServerSocket serverSocket = new ServerSocket(8888);
// 调用accept()方法监听客户端的请求
Socket socket = serverSocket.accept();
// 获取输入流对象,读取客户端发送的数据
InputStream inputStream = socket.getInputStream();
byte[] buffer = new byte[1024];
int len = inputStream.read(buffer);
// 打印接收到的数据
String message = new String(buffer, 0, len);
System.out.println("Received message: " + message);
// 关闭Socket和输入流
inputStream.close();
socket.close();
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
注意替换客户端代码中的”服务器IP地址”为实际的服务器IP地址。运行以上代码后,客户端将向服务器发送”Hello Server”的字符串,服务器接收到数据后打印出来。
请注意,这只是一个简单的Socket通信示例,实际使用时可能需要考虑到线程安全、异常处理等更复杂的情况。另外,要确保客户端和服务器端能够互相访问,防火墙和网络设置可能会影响Socket通信。
下面是一个使用Android socket进行通信的简单例子:
-
首先,在AndroidManifest.xml文件中添加以下权限:
<uses-permission android:name="android.permission.INTERNET"/>
-
创建一个新的线程来处理socket通信,确保不会阻塞主线程:
import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; public class SocketThread extends Thread { private Socket socket; private InputStream inputStream; private OutputStream outputStream; private String serverIP; private int serverPort; public SocketThread(String serverIP, int serverPort) { this.serverIP = serverIP; this.serverPort = serverPort; } @Override public void run() { try { // 创建socket并连接到服务器 socket = new Socket(serverIP, serverPort); // 获取输入流和输出流 inputStream = socket.getInputStream(); outputStream = socket.getOutputStream(); // 向服务器发送数据 String messageToSend = "Hello from Android"; outputStream.write(messageToSend.getBytes()); // 读取服务器返回的数据 byte[] buffer = new byte[1024]; int bytesRead; StringBuilder messageReceived = new StringBuilder(); while ((bytesRead = inputStream.read(buffer)) != -1) { messageReceived.append(new String(buffer, 0, bytesRead)); } // 处理接收到的数据 String finalMessage = messageReceived.toString(); // 在这里进行界面更新或其他操作 // 关闭socket和流 outputStream.close(); inputStream.close(); socket.close(); } catch (IOException e) { e.printStackTrace(); } } }
-
在需要的地方使用SocketThread启动新线程进行通信:
String serverIP = "服务器IP地址"; int serverPort = 1234; SocketThread socketThread = new SocketThread(serverIP, serverPort); socketThread.start();
在实际使用中,你需要将服务器IP地址和端口号替换为你实际使用的值。请注意,Socket通信是一个耗时的操作,建议放在后台线程进行,以避免阻塞主线程。
发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/134291.html