Разъем Android для подключения к серверу Python - PullRequest
0 голосов
/ 24 августа 2018

все Я создал простое приложение для Android, которое должно подключаться к серверу Python 3.6 через сокет и отправлять данные. Не работает Я сошел с ума, проверяя, что не работает. Не могли бы вы помочь мне?

Основная деятельность

public class Test extends AppCompatActivity  {
public Button but1;
int Ra;
public void init(){
    but1 = (Button)findViewById(R.id.button_id);
    but1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
          Client Connection = new Client();
          Connection.execute();


        }
    });
}
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_test);
    ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.INTERNET},Ra);
    init();
}}

Второй файл

public  class Client extends AsyncTask<Void ,Void , Void > {


@Override
protected Void doInBackground(Void... voids)
{
    final String adress = "192.168.1.3";
    final int Port = 70;
    Log.d("Connection","trying to create connection");
            try {
                Log.d("Connection", "Creating socket");
                Socket connect = new Socket(adress, Port);
                Log.d("Connection","Connected");
                DataOutputStream dout = new DataOutputStream(connect.getOutputStream());
                DataInputStream din = new DataInputStream(connect.getInputStream());
                dout.writeUTF("Hello");
                dout.flush();
                Log.d("Connection","Sent");
                dout.close();
                din.close();
                connect.close();
            }catch (IOException e){
            {
                e.printStackTrace();
                Log.d("connection",e.getMessage());
            }}
            return null;
}}

Python-сервер

    import socket

_Connection = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#Creating socket
#binding socket to port
_ADDRESS = ('localhost', 70)
print('Starting Server on {} port {}'.format(*_ADDRESS))

_Connection.bind(_ADDRESS)

_Connection.listen(1)

while True:
    conn, addr = _Connection.accept()
    print("Connection from ", addr)
    msg = _Connection.recv(1024)
    print(msg)

Вход

08-24 17: 31: 43.950 32614-1203 / com.example.marcin.tcpiptest D / connection: не удалось подключиться к /192.168.1.3 (порт 70) из / :: (порт 47696): не удалось подключиться: ETIMEDOUT (Тайм-аут соединения)

если кто-нибудь знает, что я делаю не так, и мне сказали бы, я был бы благодарен

1 Ответ

0 голосов
/ 09 ноября 2018
msg = _Connection.recv(1024)

Сменить сервер на

msg = _Connection.recv(0)

Проблема с буфером, у меня такая же.Попробуйте:

msg = _Connection.recv(10)

и отправить сообщение с Android на сервер "1234567890server"

На сервере отображается только "сервер".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...