Есть 2 Python скрипта на сервере, как я могу их запускать с andriod приложения?
Есть 2Python скрипта на сервере, как я могу их запускать с andriod приложения?
В приложении создал соответственно 2 кнопки для их запуска.
Суть вопроса : Как запускать, нажатием на кнопки?
1.Для простого запуска скриптов используйте CGI.
2.Если нужно как-то взаимодействовать со скриптами, например обмениваться данными в удобном формате, то лучше используйте flask/django/fastAPI для создания сервера и обращения к скриптам с их помощью.
Со стороны приложения - в обоих случаях шлите http-запрос
Благодарю за быстрый ответ!
Не могли бы чуть подробнее рассказать про CGI?
В я впервые сталкиваюсь с языком Java и вообще андроид разработкой
Заранее благодарю!
smokedevil666, CGI это не столько про java, сколько про работу с сервером, притом - вещьнесколько устаревшая (в целом - все еще рабочая, но сейчас есть большое количество фреймворков, которые будут решать те-же задачи более гибко. Написанные на python я перечислил выше).
По факту - это просто способ запускать приложения на разных языках (python/c++/rust и т.д.) с помощью веб-сервера. В целом - если нужен сам факт запуска, без нормального отклика (выходной thml/plain text в расчет брать не стоить), то можно использовать и его.
На почитать: https://lectureswww.readthedocs.io/5.web.server/cg... https://stackoverflow.com/questions/44871139/how-d...
Решил вопрос так : Настроил соединение через сокет клиент - сервер
Python скрипт на сервере :
import socket
listensocket = socket.socket()
Port = 4444
maxConnections = 999
IP = socket.gethostname()
listensocket.bind(('', Port))
listensocket.listen(maxConnections)
print('server started at ' + IP + ' on port ' + str(Port))
while True:
(clientsocket, address) = listensocket.accept()
print('New connection!')
message = clientsocket.recv(1024).decode()
if message == 'Вход':
print("Вход")
elif message == 'Выход':
print("Выход")
if message != '':
print(message)
MainActivity в android studio :
package com.smokingdevil.client;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;
public class MainActivity extends AppCompatActivity {
// declaring required variables
private Socket client;
private PrintWriter printwriter;
// private EditText textField;
private Button button;
private Button button1;
private String message;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// reference to the text field
// textField = (EditText) findViewById(R.id.editText1);
// reference to the send button
button1 = (Button) findViewById(R.id.button1);
button = (Button) findViewById(R.id.button);
// Button press event listener
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// get the text message on the text field
message = button.getText().toString();
// start the Thread to connect to server
new Thread(new ClientThread(message)).start();
}
});
button1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// get the text message on the text field
message = button1.getText().toString();
// start the Thread to connect to server
new Thread(new ClientThread(message)).start();
}
});
}
// the ClientThread class performs
// the networking operations
class ClientThread implements Runnable {
private final String message;
ClientThread(String message) {
this.message = message;
}
@Override
public void run() {
try {
// the IP and port should be correct to have a connection established
// Creates a stream socket and connects it to the specified port number on the named host.
client = new Socket("ВАШ IP", 4444); // connect to server
printwriter = new PrintWriter(client.getOutputStream(),true);
printwriter.write(message); // write the message to output stream
printwriter.flush();
printwriter.close();
// closing the connection
client.close();
} catch (IOException e) {
e.printStackTrace();
}
// updating the UI
runOnUiThread(new Runnable() {
@Override
public void run() {
// textField.setText("");
}
});
}
}
}
activity_main.xml в android studio :