Отправить сообщение с Android клиента на Python сервер - PullRequest
0 голосов
/ 24 февраля 2020

Привет, я пытаюсь отправить данные с android клиента на Python сервер на моем P C, вот код, который я действительно не знаю, что я делаю неправильно, (я не уверен, что понял, как работают сокеты tcp на Javascript), я новичок в кодировании, запускаю эту программу, когда мой мобильный телефон подключен к P C через USB.

Javascript Клиент:

package com.example.app;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Button;
import android.view.View;
import android.widget.Toast;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.InetAddress;
import java.net.Socket;

public class MainActivity extends AppCompatActivity {
Button btn;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    btn = findViewById(R.id.idBtn);
    btn.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            Toast.makeText(getApplicationContext(),"should do something",Toast.LENGTH_SHORT).show();
            BackgroundTask b = new BackgroundTask();
            b.execute();
        }
    });
}

class BackgroundTask extends AsyncTask<String,Void,String>
{
    Socket s;
    DataOutputStream dos;
    String message;

    @Override
    protected String doInBackground(String... strings) {

        message = "Hello_Javascript";
        try {
            InetAddress serverAddr = InetAddress.getByName("192.168.1.7");
            s = new Socket(serverAddr, 10000);
            dos = new DataOutputStream(s.getOutputStream());
            dos.writeUTF(message);

            dos.close();

        }catch(IOException e){
            e.printStackTrace();
        }


        return null;
    }
}
}

Python Сервер (должно быть в порядке, так как я могу общаться с другим Python Клиентом)

import socket

# Create a TCP/IP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# Bind the socket to the port
server_address = ('localhost', 10000)
print('starting up port ', server_address)
sock.bind(server_address)

# Listen for incoming connections
sock.listen(1)

while True:
# Wait for a connection
print('waiting for a connection')
connection, client_address = sock.accept()
try:
    print('connection from ', client_address)
    # Receive the data in small chunks and retransmit it
    data = connection.recv(100)
    print('received ', data)
finally:
    # Clean up the connection
    connection.close()

Заранее спасибо!

1 Ответ

0 голосов
/ 24 февраля 2020

Вы можете использовать эмулятор, чтобы проверить, работает ли он. Потому что оба совместно используют один и тот же сервер

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