Android客户端代码:
在Android应用中,网络操作不能在主线程中执行,因此需要使用异步任务(AsyncTask)或线程来执行。以下是一个简单的Android TCP客户端的例子:
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import androidx.appcompat.app.AppCompatActivity;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
public class TCPClientActivity extends AppCompatActivity {
private static final String TAG = "TCPClientActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tcpclient);
// 在异步任务中执行网络操作
new ConnectToServerTask().execute();
}
private class ConnectToServerTask extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... voids) {
try {
// 创建客户端的Socket,连接服务器端
Socket socket = new Socket("your_server_ip", 12345);
// 获取输入流和输出流
InputStream inputStream = socket.getInputStream();
OutputStream outputStream = socket.getOutputStream();
// 发送数据给服务器
String requestData = "Hello, Server!";
outputStream.write(requestData.getBytes());
outputStream.flush();
// 读取服务器的响应
byte[] buffer = new byte[1024];
int bytesRead = inputStream.read(buffer);
final String responseData = new String(buffer, 0, bytesRead);
// 在UI线程更新UI
runOnUiThread(new Runnable() {
@Override
public void run() {
// 处理服务器响应,例如显示在TextView上
Log.d(TAG, "Received from server: " + responseData);
}
});
// 关闭与服务器的连接
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
}
请注意,上述代码中的 your_server_ip 部分应该替换为你实际使用的服务器的IP地址。
此外,确保在 AndroidManifest.xml 文件中添加网络权限:
<uses-permission android:name="android.permission.INTERNET" />
上述代码使用了AsyncTask来在后台线程中执行网络操作,并在UI线程更新UI。在实际应用中,你可能需要更复杂的线程管理、异常处理、UI更新等操作。
这是一个基本的基于TCP协议的Socket通信的Android客户端示例。在实际应用中,你可能需要根据具体需求进一步优化和扩展。
转载请注明出处:http://www.pingtaimeng.com/article/detail/15208/Android