Я хочу подключить Android-клиент (kotlin) к серверу Python через LTE-соединение.
- Сервер работает
- Сервер получает хорошо от локального клиента Python (Пробовал только для проверки)
- Не получает от клиента Android
- Через некоторое время происходит сбой клиента Android, говоря - соединение не удалось: ETIMEDOUT (Тайм-аут соединения)
Я могу 'не знаю почему.Пожалуйста, помогите
Server.py
import socket
HOST = '' # Standard loopback interface address (localhost)
PORT = 3333 # Port to listen on (non-privileged ports are > 1023)
print('server starting')
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.bind((HOST, PORT))
s.listen()
conn, addr = s.accept()
with conn:
print('Connected by', addr)
while True:
data = conn.recv(1024)
if not data:
break
conn.sendall(data)
MainActivity.kt
package mypackage
import android.os.AsyncTask
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.widget.Button
import android.widget.TextView
import java.io.PrintWriter
import java.net.Inet4Address
import java.net.InetAddress
import java.net.Socket
class MainActivity : AppCompatActivity() {
var connectButton:Button? = null
var status: TextView? = null
val ip = InetAddress.getByName("theipaddr")
val port = 3333
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
connectButton = findViewById(R.id.connectButton)
status = findViewById(R.id.status)
connectButton?.setOnClickListener {
try {
doAsync {
val socket = Socket(ip, port)
val printWriter = PrintWriter(socket.getOutputStream())
printWriter.write("hellohellohellohellohhellohellohelloellohello")
printWriter.flush()
printWriter.close()
socket.close()
Log.d("TEST","donnastic")
}.execute()
}catch (e:Exception){
Log.d("TEST","fucked")
e.printStackTrace()
}
status?.text = "connected"
}
}
}
class doAsync(val handler: () -> Unit) : AsyncTask<Void, Void, Void>() {
override fun doInBackground(vararg params: Void?): Void? {
handler()
return null
}
}