android与pc tcp通信
时间: 2023-06-30 15:16:29 浏览: 159
Android与PC通信
5星 · 资源好评率100%
在Android和PC之间进行TCP通信可以分为两个部分:客户端和服务端。其中,Android设备可以是客户端或服务端,PC也可以是客户端或服务端,因此总共有四种组合方式。
下面是一个基本的Android客户端和PC服务端之间的TCP通信示例:
1. 客户端代码(Android平台)
```java
public class MainActivity extends AppCompatActivity {
private Button mBtnConnect;
private EditText mEtIP, mEtPort, mEtContent;
private TextView mTvResponse;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mBtnConnect = findViewById(R.id.btn_connect);
mEtIP = findViewById(R.id.et_ip);
mEtPort = findViewById(R.id.et_port);
mEtContent = findViewById(R.id.et_content);
mTvResponse = findViewById(R.id.tv_response);
mBtnConnect.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new Thread(new Runnable() {
@Override
public void run() {
try {
// 获取IP地址和端口号
String ip = mEtIP.getText().toString().trim();
int port = Integer.parseInt(mEtPort.getText().toString().trim());
// 创建Socket对象
Socket socket = new Socket(ip, port);
// 获取输出流
OutputStream outputStream = socket.getOutputStream();
// 发送数据
String content = mEtContent.getText().toString().trim();
outputStream.write(content.getBytes("UTF-8"));
// 获取输入流
InputStream inputStream = socket.getInputStream();
byte[] buffer = new byte[1024];
int len = inputStream.read(buffer);
final String response = new String(buffer, 0, len, "UTF-8");
// 显示响应结果
runOnUiThread(new Runnable() {
@Override
public void run() {
mTvResponse.setText(response);
}
});
// 关闭Socket对象
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
});
}
}
```
2. 服务端代码(PC平台)
```java
public class Server {
public static void main(String[] args) {
try {
// 创建ServerSocket对象,并指定端口号
int port = 8888;
ServerSocket serverSocket = new ServerSocket(port);
// 等待客户端连接
System.out.println("等待客户端连接...");
Socket socket = serverSocket.accept();
System.out.println("客户端已连接。");
// 获取输入流
InputStream inputStream = socket.getInputStream();
byte[] buffer = new byte[1024];
int len = inputStream.read(buffer);
String content = new String(buffer, 0, len, "UTF-8");
System.out.println("接收到客户端的数据:" + content);
// 处理数据
String response = "Hello, Android!";
// 获取输出流
OutputStream outputStream = socket.getOutputStream();
// 发送数据
outputStream.write(response.getBytes("UTF-8"));
// 关闭Socket对象
socket.close();
serverSocket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
在运行代码之前,需要确保Android设备和PC在同一个局域网中,并且知道PC的IP地址和端口号。如果PC的IP地址为192.168.1.100,端口号为8888,则Android设备需要将IP地址设置为192.168.1.100,端口号设置为8888。
阅读全文