Arquivo de imagem quebrado ao enviar imagem do cliente Java para o servidor Python

Washbear:

Eu quero enviar uma imagem do meu cliente (que é um aplicativo Java) por soquete para o meu servidor, que deve ser programado em Python. Infelizmente, sou novo na programação Python / Java e não entendo as abordagens moast que encontrei on-line, mas o que parecia funcionar melhor até agora foi o seguinte:

No lado do cliente, eu fiz isso

    String pathname = new String("C:\\Users\\vince\\Pictures\\Saved Pictures\\M249.jpg");

    Socket photoSocket = new Socket(IP_ADDRESS, PORT_NO);
    DataOutputStream dos = new DataOutputStream(photoSocket.getOutputStream());
    FileInputStream fis = new FileInputStream(pathname);
    int size = fis.available();

    byte[] data = new byte[size];
    fis.read(data);
    dos.writeInt(size);
    dos.write(data);

    dos.flush();
    dos.close();
    fis.close();
    photoSocket.close();

O que, se eu entendi corretamente, envia dados de imagem em forma de bytearray para a porta de recebimento.

Agora no servidor (Python) eu tenho o seguinte:

import socket  # Import socket module

s = socket.socket()  # Create a socket object
port = 1234  # Reserve a port for your service.
s.bind(("192.168.178.44", port))  # Bind to the port
s.listen(5)  # Now wait for client connection.

while True:
  conn, addr = s.accept()
  print('client connected ... ', addr)
  f = open('tst.jpg', 'wb')

  while True:
    data = conn.recv(1024)
    if not data: break
    f.write(data)
    print('writing file ....')

  f.close()
  print("finished writing file")
  conn.close()
  print('client disconnected')

E parece transferir dados, porque depois de iniciar meu arquivo do servidor python e depois executar o aplicativo java, meu console python diz:

cliente conectado ... ('192.168.178.44', 51061) gravando arquivo .... gravando arquivo .... gravando arquivo .... gravando arquivo .... gravando arquivo .... gravando arquivo .... gravando arquivo .... escrevendo arquivo .... terminou de gravar o arquivo cliente desconectado

E então eu tenho um novo arquivo chamado "tst.jpg" e tem o mesmo tamanho nos dois caminhos, mas não consigo abri-lo porque está de alguma forma quebrado ou corrompido.

Você pode me dizer o que há de errado e também como deve ser o meu código? Como eu disse, sou novo em programação e conceitos vagos do que devo fazer não me ajudam muito.

roozbeh sharifnasab:

seus dois códigos estão OK, apenas uma coisa. no código java, você está enviando o tamanho dos dados primeiro, mas no código python, não o separa da imagem.

a melhor coisa a fazer é não enviar o tamanho e começar a enviar a imagem inteira. Quero comentar esta linha:

        dos.writeInt(size);

isso deve resolver o problema.

boa sorte.

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

Erro de pipe quebrado ao tentar enviar dados do servidor para o cliente em sockets Python

Erro de pipe quebrado ao tentar enviar dados do servidor para o cliente em sockets Python

Enviar arquivo do servidor Python para o cliente Java

enviar imagem do servidor para o cliente com REST API

Enviar uma imagem do cliente para o servidor por meio de uma conexão de soquete

Enviar imagem do cliente TCP Java para o servidor TCP Node.js

como enviar uma imagem do servidor para o cliente em python

Enviar quadros de imagem do servidor C ++ para o cliente C # usando Pipe Nomeado

Como compactar o tamanho do arquivo de imagem capturado antes de enviar ao servidor usando retrofit

C ++ Enviar cliente de imagem para o servidor (sockets), imagem corrompida

Enviando imagem do cliente para o servidor

falha no envio de imagem do servidor http para o cliente

Node.js falhou ao fazer upload do arquivo de imagem para o firebase do servidor

Obtendo erro interno do servidor ao enviar solicitação POST com um arquivo de imagem para o banco de dados usando React JS e Laravel

socket io, node js, exemplo simples para enviar imagem / arquivos do servidor para o cliente

Titanium - Enviar imagem ao servidor: bug de tamanho de arquivo

Melhor maneira de enviar arquivo do servidor Java para o cliente

Preciso enviar um arquivo de imagem ao servidor Clarifai para classificação de imagem, mas continuo recebendo "quadros pulados, aplicativo com muito trabalho"

Vá para http: não existe tal arquivo após enviar a imagem do cliente Qt

Como enviar uma imagem (UIImage) de um programa cliente SWIFT ios para um programa servidor JAVA?

Como enviar a imagem como arquivo para o servidor no iônico

Como enviar mensagem do servidor Python para o cliente Java

php retorna erros ao enviar e imagem para o servidor

Enviar imagem para o servidor usando o tipo de entrada de arquivo

Como enviar o tipo de arquivo de imagem para o servidor php usando a biblioteca volley

Envie o caminho da imagem do servidor expresso node.js para reagir ao cliente

Como enviar um arquivo / imagem do React para o servidor node.js.

Recupere uma imagem de um Android para enviar ao servidor

Fazer upload de uma imagem do cliente para o servidor NodeJS e salvá-la internamente no servidor?

TOP lista

quentelabel

Arquivo