Я работаю над проектом, в котором есть сервер (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();
}
}
}
Большое спасибо.