Đây là câu hỏi đầu tiên của tôi. Tôi đã tìm kiếm các giải pháp của các vấn đề tương tự nhưng trong mọi trường hợp có một số khác biệt so với trường hợp của tôi. Tôi đang cố thiết lập kết nối đơn giản giữa máy chủ Python và ứng dụng Android bằng ổ cắm. Ứng dụng Android bắt đầu một cuộc trò chuyện với máy chủ: nó sẽ gửi một tin nhắn đến máy chủ, máy chủ sẽ nhận và hiển thị nó, sau đó máy chủ sẽ gửi trả lời cho ứng dụng. Ứng dụng hiển thị câu trả lời trên màn hình trong một TextView. Đây là mã của tôi trên các mặt hàng:Kết nối giữa Máy chủ Python và Ứng dụng Android
public class MyClient extends Activity implements OnClickListener{
EditText enterMessage;
Button sendbutton;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.myclient);
enterMessage = (EditText)findViewById(R.id.enterMessage);
sendbutton = (Button)findViewById(R.id.sendbutton);
sendbutton.setOnClickListener(this);
}
@Override
public void onClick(View arg0) {
Thread t = new Thread(){
@Override
public void run() {
try {
Socket s = new Socket("192.168.183.1", 7000);
DataOutputStream dos = new DataOutputStream(s.getOutputStream());
dos.writeUTF(enterMessage.getText().toString());
//read input stream
DataInputStream dis2 = new DataInputStream(s.getInputStream());
InputStreamReader disR2 = new InputStreamReader(dis2);
BufferedReader br = new BufferedReader(disR2);//create a BufferReader object for input
//print the input to the application screen
final TextView receivedMsg = (TextView) findViewById(R.id.textView2);
receivedMsg.setText(br.toString());
dis2.close();
s.close();
} catch (IOException e) {
e.printStackTrace();
}
}
};
t.start();
Toast.makeText(this, "The message has been sent", Toast.LENGTH_SHORT).show();
} }
Và ở phía máy chủ này là mã của tôi:
from socket import *
HOST = "192.168.183.1" #local host
PORT = 7000 #open port 7000 for connection
s = socket(AF_INET, SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1) #how many connections can it receive at one time
conn, addr = s.accept() #accept the connection
print "Connected by: " , addr #print the address of the person connected
while True:
data = conn.recv(1024) #how many bytes of data will the server receive
print "Received: ", repr(data)
reply = raw_input("Reply: ") #server's reply to the client
conn.sendall(reply)
conn.close()
Khi tôi cố gắng để gửi một tin nhắn từ ứng dụng đến máy chủ nó hoạt động hoàn hảo . Tuy nhiên, ngay sau khi máy chủ nhận được tin nhắn và hiển thị nó, ứng dụng sẽ dừng ngay lập tức với thông báo lỗi: đã dừng đột ngột. Vui lòng thử lại. Thông tin bổ sung: Tôi đang sử dụng gói quảng cáo để phát triển Android và IDLE để chạy mã máy chủ. Cả hai trên Windows8.