Как получить ответ от сервера Python клиенту Android (Java)?
У меня есть код приложения, который считывает последнее входящее смс на Android:
MainActivity.java
package com.example.mysmsapp;
import android.Manifest;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
public class MainActivity extends AppCompatActivity {
public String message; // наша строка, в которую мы будем запихивать последнее входящее смс
public TextView myTextView; // текстовое поле, где будет отображаться последнее входящее смс
public TextView bebra;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myTextView = findViewById(R.id.textView);
bebra = findViewById(R.id.bebra);
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.READ_SMS},
PackageManager.PERMISSION_GRANTED);
}
public void Read_SMS(View view) {
Cursor cursor = getContentResolver().query(Uri.parse("content://sms"), null, null, null, null); // парсим папку входящие
cursor.moveToFirst();
myTextView.setText(cursor.getString(12));// выводим смску
message = cursor.getString(12); // присваиваем строке
sendMsg(message);
}
public void sendMsg(String message)
{
MessageSender messageSender = new MessageSender(); // класс клиента
messageSender.execute(message);
}
}
Есть код клиента на Java (Android). Он отправляет последнее входящее смс:
MessageSender.java
package com.example.mysmsapp;
import android.os.AsyncTask;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;
public class MessageSender extends AsyncTask<String,Void,Void> {
Socket socket;
PrintWriter printWriter;
@Override
protected Void doInBackground(String... strings) {
String message=strings[0];
try {
socket = new Socket("46.72.103.195",7800);
printWriter= new PrintWriter(socket.getOutputStream());
printWriter.write(message);
printWriter.flush();
printWriter.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
И есть еще код сервера на Python:
Server.py
import socket
from MyModel import model
listensocket = socket.socket() # создаем сокет
Port = 7800
maxConnections = 1 # кол-во клиентов
IP = '46.72.103.195'
listensocket.bind((IP, Port)) # биндим его
listensocket.listen(maxConnections)
print("Server run on port at " + IP + " on port " + str(Port)) # запускаем
while True:
(clientsocket, address) = listensocket.accept()
message = clientsocket.recv(1024).decode()
#message1 = model([message])
clientsocket.send('привет + \n'.encode())
print(message)
Подскажите, пожалуйста, как принять ответ от сервера: clientsocket.send('привет + \n'.encode()) и установить его в качестве TextView public textView bebra;?
Понимаю, что, должно быть что-то типа reader = new BufferedReader(new InputStreamReader(args)) либо же mInput = new BufferedReader(new InputStreamReader(socket.getInputStream(), charset));, но не понимаю как правильно реализовать это... Помогите, пожалуйста!!