用Android写一个监听两个TCP端口并实现数据传输的代码
时间: 2023-04-11 08:01:04 浏览: 84
我可以回答这个问题。以下是一个用Android编写的监听两个TCP端口并实现数据传输的示例代码:
```
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class TCPListener {
private ServerSocket serverSocket1;
private ServerSocket serverSocket2;
private Socket socket1;
private Socket socket2;
public void startListening() {
try {
serverSocket1 = new ServerSocket(8000);
serverSocket2 = new ServerSocket(9000);
while (true) {
socket1 = serverSocket1.accept();
socket2 = serverSocket2.accept();
Thread thread1 = new Thread(new DataTransfer(socket1.getInputStream(), socket2.getOutputStream()));
Thread thread2 = new Thread(new DataTransfer(socket2.getInputStream(), socket1.getOutputStream()));
thread1.start();
thread2.start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
private class DataTransfer implements Runnable {
private InputStream inputStream;
private OutputStream outputStream;
public DataTransfer(InputStream inputStream, OutputStream outputStream) {
this.inputStream = inputStream;
this.outputStream = outputStream;
}
@Override
public void run() {
try {
byte[] buffer = new byte[1024];
int length;
while ((length = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, length);
outputStream.flush();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
```
这个代码创建了两个ServerSocket对象,分别监听8000和9000端口。当有连接请求时,它会创建两个线程,每个线程负责一个Socket的数据传输。数据传输使用了一个DataTransfer类,它实现了Runnable接口,可以在一个单独的线程中运行。在DataTransfer类的run()方法中,它会不断地从输入流中读取数据,并将数据写入输出流中。
你可以根据自己的需求修改这个代码,比如修改监听的端口号、修改数据传输的方式等等。