android socket 循环互相发送消息
时间: 2023-07-15 09:10:36 浏览: 100
socket通信以及发送消息接收消息
要实现 Android Socket 循环互相发送消息,你可以使用以下步骤:
1. 在客户端和服务器端分别创建 Socket 对象,并建立连接。
2. 在客户端和服务器端分别创建输入流和输出流,用于读取和发送消息。
3. 在客户端和服务器端分别启动一个线程,用于循环读取对方发送的消息,并将自己的消息发送给对方。
4. 在客户端线程中,使用输出流将消息发送给服务器端。
5. 在服务器端线程中,使用输出流将消息发送给客户端。
下面是一个简单的示例代码,演示了如何在 Android 上实现 Socket 循环互相发送消息:
客户端代码:
```
public class ClientThread implements Runnable {
private Socket socket;
private PrintWriter out;
private BufferedReader in;
public ClientThread(Socket socket) throws IOException {
this.socket = socket;
out = new PrintWriter(socket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
}
@Override
public void run() {
try {
while (true) {
// 读取服务器端发送的消息
String message = in.readLine();
if (message != null) {
System.out.println("接收到服务器端消息:" + message);
}
// 发送消息给服务器端
out.println("Hello, server!");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
```
服务器端代码:
```
public class ServerThread implements Runnable {
private Socket socket;
private PrintWriter out;
private BufferedReader in;
public ServerThread(Socket socket) throws IOException {
this.socket = socket;
out = new PrintWriter(socket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
}
@Override
public void run() {
try {
while (true) {
// 读取客户端发送的消息
String message = in.readLine();
if (message != null) {
System.out.println("接收到客户端消息:" + message);
}
// 发送消息给客户端
out.println("Hello, client!");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
```
在主线程中启动客户端和服务器端线程:
```
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
private static final int PORT = 12345;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new Thread(new Runnable() {
@Override
public void run() {
try {
// 创建客户端套接字并连接到服务器
Socket clientSocket = new Socket("localhost", PORT);
Log.d(TAG, "已连接到服务器");
// 启动客户端线程
new Thread(new ClientThread(clientSocket)).start();
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
try {
// 创建服务器端套接字
ServerSocket serverSocket = new ServerSocket(PORT);
Log.d(TAG, "服务器已启动");
while (true) {
// 等待客户端连接
Socket clientSocket = serverSocket.accept();
Log.d(TAG, "已连接到客户端");
// 启动服务器端线程
new Thread(new ServerThread(clientSocket)).start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}
}
```
这样,客户端和服务器端就可以循环互相发送消息了。
阅读全文