Подключите приложение Android и скрипт Python с помощью сокетовPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Подключите приложение Android и скрипт Python с помощью сокетов

Сообщение Anonymous »

Я пытаюсь создать систему, в которой телефон подключается к серверу и отправляет ему данные, данные обрабатываются, сохраняются и возвращаются на телефон. На сервере также есть VPN, к которому подключен телефон.
Моя идея состоит в том, чтобы использовать сокеты, которые должны работать в такой ситуации, но я не могу заставить их работать. Кроме того, как сказано в заголовке, я использую Python на стороне сервера, а приложение находится на Kotlin.
Я начал с тестирования сокетов Python с настройкой клиент-сервер эхо, и это работает, затем я попытался сделать клиент на котлине, но он не подключается к серверу.
Код сервера такой:
import socket

HOST = "10.8.0.1"
PORT = 65432

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.bind((HOST, PORT))
s.listen()
print("Listening...")
conn, addr = s.accept()
with conn:
print(f"Connected by {addr}")
while True:
data = conn.recv(1024)
print(f"Recived: {data.decode("utf-8")}")
if not data:
break
conn.sendall(data)

Клиент имеет простой интерфейс:
Изображение

Это код Kotlin для него:
package com.example.testsockets

import android.os.Bundle
import android.view.View
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import com.google.android.material.textfield.TextInputEditText
import java.net.InetSocketAddress
import java.net.Socket
import java.util.concurrent.Executors

class MainActivity : AppCompatActivity() {
private val socket = Socket()
private val executorService = Executors.newSingleThreadExecutor();
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}

fun send(v: View?){
executorService.execute {
var entrada = findViewById(R.id.entrada)
var salida = findViewById(R.id.salida)
val host = "10.8.0.1"
val port = 65432
socket.connect(InetSocketAddress(host, port), 3000)
// This will be used to send to the server
val out = socket.getOutputStream()
out.write(entrada.text.toString().toByteArray(charset("UTF-8")))
}
}
}

И AndroidManifest:













Наконец, я получаю сообщение об ошибке:
FATAL EXCEPTION: pool-1-thread-1
Process: com.example.testsockets, PID: 1897
java.lang.Error: java.net.SocketTimeoutException: failed to connect to /10.8.0.1 (port 65432) from /10.8.0.2 (port 45974) after 3000ms
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1173)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:764)
Caused by: java.net.SocketTimeoutException: failed to connect to /10.8.0.1 (port 65432) from /10.8.0.2 (port 45974) after 3000ms
at libcore.io.IoBridge.connectErrno(IoBridge.java:185)
at libcore.io.IoBridge.connect(IoBridge.java:129)
at java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:137)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:390)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:230)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:212)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:436)
at java.net.Socket.connect(Socket.java:621)
at com.example.testsockets.MainActivity.send$lambda$0(MainActivity.kt:27)
at com.example.testsockets.MainActivity.$r8$lambda$qyWxoPew67mcJ-GNbw1keB5dm7k(Unknown Source:0)
at com.example.testsockets.MainActivity$$ExternalSyntheticLambda0.run(Unknown Source:2)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) 
at java.lang.Thread.run(Thread.java:764) 


Подробнее здесь: https://stackoverflow.com/questions/786 ... th-sockets
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Подключите приложение конденсатора js, работающий сервер и эмулятор
    Anonymous » » в форуме Android
    0 Ответы
    32 Просмотры
    Последнее сообщение Anonymous
  • URL подключите к серверу Xampp с помощью эмулятора Android
    Anonymous » » в форуме Android
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • URL подключите к серверу Xampp с помощью эмулятора Android
    Anonymous » » в форуме Android
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Подключите входные данные HTML к функции Python с помощью flask
    Гость » » в форуме Python
    0 Ответы
    20 Просмотры
    Последнее сообщение Гость
  • Подключите устройство Android к устройству виртуального COM-порта.
    Гость » » в форуме Android
    0 Ответы
    17 Просмотры
    Последнее сообщение Гость

Вернуться в «Python»