Подключите MainActivity к python серверу (Android Studio) - PullRequest
0 голосов
/ 22 января 2020

Я пытаюсь разработать свое первое приложение в Android Studio и подключить его к серверу в python. Я написал класс Client и MainActivity с java в Android Studio и написал сервер на Pycharm. Когда я создаю объект client в другом классе, связь между клиентом и сервером работает нормально. Однако, когда я делаю то же самое в MainActivity, он не работает, и я получаю эту ошибку: «E / m.example.mage: Неизвестные биты, установленные в runtime_flags: 0x8000». Нужно ли что-то еще делать или есть способ это исправить?

package com.example.magen;

import android.widget.TextView;

import java.util.*;
import java.net.*;
import java.io.*;

public class Client {
    private Socket clientSocket;
    private PrintWriter out;
    private BufferedReader in;


    public void startConnection(String ip, int port) {
        try {
            clientSocket = new Socket(ip, port);
            out = new PrintWriter(clientSocket.getOutputStream(), true);
            in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
            System.out.println("connected to server");
        }
        catch(Exception e){
            System.out.println("error 1 " + e.getMessage());
        }
    }

    public String sendMessage(String msg) {
        String resp="";
        try {
            out.println(msg);
            System.out.println("client: "+msg);
            resp = in.readLine();

        }
        catch(Exception e){
            System.out.println("error 2 " + e.getMessage());
        }
        return resp;
    }

    public void stopConnection() {
        try {
            in.close();
            out.close();
            clientSocket.close();
        }
        catch(Exception e){
            System.out.println("error 3 " + e.getMessage());
        }
    }
}
import socket
import select
import datetime

server_socket = socket.socket()
server_socket.bind(('0.0.0.0', 6969))
server_socket.listen(10)

open_client_sockets = [] 

def main():
    while True:
        rlist, wlist, xlist = select.select([server_socket]+open_client_sockets, open_client_sockets, [])
        for current_socket in rlist:
            if current_socket is server_socket:
                (new_socket, address) = server_socket.accept()
                open_client_sockets.append(new_socket)
            else:
                full_msg = current_socket.recv(1024).decode()
                print(full_msg)
                current_socket.send("hi".encode())
                ...
                ...
                ...
                ...
                ...

if __name__ == '__main__':
    main()
package com.example.magen;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;



public class MainActivity extends AppCompatActivity {

    private EditText username;
    private EditText password;
    private Button loginButton;
    private Button registerButton;
    private TextView tvInfo;
    private Client client = new Client();


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        username = (EditText)findViewById(R.id.etUsername);
        password = (EditText)findViewById(R.id.etPassword);
        loginButton = (Button)findViewById(R.id.loginButton);
        registerButton = (Button)findViewById(R.id.registerButton);
        tvInfo = (TextView)findViewById(R.id.tvInfo);


        connectToServer(client);

        registerButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, ThirdActivity.class);
                startActivity(intent);
            }
        });

        loginButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                validate(username.getText().toString(), password.getText().toString(),tvInfo);
            }
        });


    }

    private void connectToServer(Client client){
        client.startConnection("127.0.0.1", 6969);
        String resp = client.sendMessage("hello");
        tvInfo.setText(resp);
    }

    private void validate(String name, String password, TextView tvInfo){
        if(name.equals("king_mageni") && password.equals("123456789")){
            Intent intent = new Intent(MainActivity.this, SecondActivity.class);
            intent.putExtra("username",name);
            startActivity(intent);
        }
        else{
            String errorMassage = "Incorrect username or password!";
            tvInfo.setText(errorMassage);
        }
    }
}

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