Как подключить телефонный клиент android к серверу python в той же сети с помощью программирования сокетов? - PullRequest
0 голосов
/ 17 апреля 2020

Я пытаюсь подключить мое android приложение (клиент) к моему P C (python сервер). Они оба в одной сети. Я могу пинговать свой android телефон с моего P C и P C с телефона. Но когда я пытаюсь подключить их с помощью сокетов, android приложение застревает при подключении и через некоторое время выдает исключение тайм-аута. Вот код Android Класс клиента:

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

private String mCommand;
private String mHostIP;

public Client(String mCommand, String mHostIP) {
    this.mCommand = mCommand;
    this.mHostIP = mHostIP;
}

@Override
protected Void doInBackground(Void... voids) {
    try {

        InetAddress serverAddr = InetAddress.getByName(mHostIP);
        Socket soc = new Socket(serverAddr,9999);

        OutputStream toServer = soc.getOutputStream();
        PrintWriter output = new PrintWriter(toServer);
        output.println(mCommand);
        DataOutputStream out = new DataOutputStream(toServer);
        out.writeBytes(mCommand);
    } catch (IOException e) {
        e.printStackTrace();
    }
    return null;
}
}

Он застревает на новом сокете и через некоторое время выдает исключение.

Вот код для Python сервера:

import socket
import os

hostname = socket.gethostname()
IPAddr = socket.gethostbyname(hostname)
print('My IP: '+IPAddr)
port  = 9999

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print ("socket successfully created")

server_address = ('192.168.10.4', 9999)

s.bind(server_address)

s.listen(1)
print ("socket is listening")

while True:
    try:
        c, addr = s.accept()
        print ('Got connection from', addr)
        type = c.recv(1024).decode('utf-8')
        print(type)
    finally:
        print('Could not connect')
        c.close()
        break

1 Ответ

0 голосов
/ 19 апреля 2020

Внимательно посмотрите на свой брандмауэр.

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