tôi đang làm việc trên một ứng dụng Android mà đòi hỏi một kết nối TCP đến một máy chủ TCP (viết bằng Node.js)kết nối TCP Android thực hành tốt nhất
My Android TCP client đang làm việc một có thể gửi tin nhắn qua lại.
câu hỏi spesific của tôi là:
- cách tốt nhất để xử lý một kết nối TCP đến một máy chủ trong Android là gì?
- Làm thế nào để duy trì kết nối (đóng kết nối đúng cách trên onDestroy() vv)?
- Có bether cách sau đó sử dụng một AsyncTask (Trừ một lớp Thread bình thường, mà không được phép trong Android 4,0)
tôi có kết nối ổ cắm của tôi trong một AsyncTask như thế này:
@Override
protected Void doInBackground(Void... params) {
try {
Log.d("TCP_MESSAGE", "Connecting...");
socket = new Socket(MY_LOCAL_IP, 8080);
dataOutput = new DataOutputStream(socket.getOutputStream());
inputstream = new InputStreamReader(socket.getInputStream());
input = new BufferedReader(inputstream);
while (!canceled) {
String message = input.readLine();
handleMessage(message);
}
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}
Lý do tôi có kết nối trong AsyncTask là vì tôi đang sử dụng android 4.0 và không được phép có mã mạng trong một Chủ đề thông thường.
Bạn có nói rằng sử dụng Thread không được phép trong 4.0? Điều đó không đúng. Nhưng dù sao nhìn thấy câu trả lời của tôi dưới đây. –
Bạn đang sai về việc có chuỗi trong phiên bản 4.0. Những gì bạn không thể làm là có mã mạng trong chuỗi ** CHÍNH **. – m0skit0
Okey. Tôi đã có một ngoại lệ khi tôi sử dụng một Thread bình thường (Và tìm thấy các chủ đề khác mà spesified cùng một vấn đề). Nhưng tôi đã nghĩ rằng đó là một chút lạ, tôi đoán bạn có quyền. – Emil