Отправить сообщение с клиента (Android-Mobile) на сервер (Python) - PullRequest
0 голосов
/ 21 мая 2019

Я работаю над проектом, в котором есть сервер (Python 3.x) и клиент (Android Studio). Клиент (мобильный телефон) берет изображение (растровое изображение) и отправляет его на сервер (Python). В серверной части он делает некоторые вещи для глубокого обучения и генерирует прогноз. Итак, мне нужно отправить этот прогноз (строку) клиенту обратно. Тем не менее, я использую сокет программирования, и он не работает. Я работал над этим в течение долгого времени, и крайний срок приближается. Итак, кто-нибудь может мне помочь?

Ошибка МОЖЕТ БЫТЬ причиной clientSocket.getInputStream () (но я не уверен)

ЗДЕСЬ, КАК СЕРВЕР (ПИТОН) СМОТРЕТЬ, КАК


import socket
import base64

HOST = 'localhost'  
PORT = 5433        # 1023 ten büyük bir sayı olsun.

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.bind((HOST, PORT))
    s.listen(5)
    i = 1 #Dosya adıyla ilgili.

    while True:
        conn, addr = s.accept()
        with conn:
            print(' > connected by ', addr)

            #Take image that was sent from Client
            data = base64.b64encode(b'')
            while True:     
                yenidata = conn.recv(1024)            
                if not yenidata:
                    break            
                data = data + yenidata 

            #Save the image to do DL part.
            fileName = 'yeniResim'+str(i)
            with open("C:/Users/MUSTAFAAKTAS/Desktop/Indirilenler/"+fileName+".png", "wb") as fh:
                fh.write((base64.decodebytes(data))) 
                i = i + 1 
                print(" >",fileName," saved.")

            #In here, I randomly wrote "Message", but in real, I do some DL stuff and try to send the prediction to the Client
            conn.send(bytes("Message",'UTF-8'))
            print(" > Message sent")

ТЕПЕРЬ КЛИЕНТ (АНДРИИД) ЧАСТЬ ЗДЕСЬ,


#I create a connection like this,
Socket client = new Socket(IP, PORT);

#I need 'cevap' which is the prediction that was sent from the server to client
String cevap = ServerRespond();


public String ServerRespond(){

        if(client.isClosed()) {
            return "SERVER Closed";
        }
        else {
                try {
                    ServerSocket ss = new ServerSocket(5433);
                    Socket s = ss.accept();
                    InputStream sin = s.getInputStream();
                    DataInputStream dis = new DataInputStream(sin);
                    return dis.readUTF().toString();
                } catch (SocketTimeoutException s) {
                    return "Socket timed out!";
                } catch (Exception ioe) {
                    return "IO HATASI " + ioe.getLocalizedMessage();
                }

        }
    }

Большое спасибо.

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