

タイトルに書いた通りpythonで画像をバイナリで変換しkotlinで受信しようとしてもバイナリデータが途中ですべて0になり不完全な状態で画像が受信されてしまいます。

画像のサイズが349,325バイトに対してkotlinでログを確認したところ2804バイトしか受信していませんでした。  
最近プログラミングを始めたもんでコードが冗長ですがご了承ください。

**kotlin側**

[code]

    val socket: Socket?
        val out: BufferedOutputStream?
        try {
    
            //ソケットの作成
            socket = Socket(IP_ADDR, PORT)
            out = BufferedOutputStream(socket.getOutputStream())
    
            val inps = socket.getInputStream()
            val bufferedReader = BufferedInputStream(inps)
            val dis = DataInputStream(inps)
    
            //パイソンから送られてくる画像のサイズを受信
            val buf = ByteArray(6)
            dis.read(buf)
    
            val reqData = String(buf, Charset.forName("UTF-8"))
    
            //画像サイズのバイト配列を作成
            val buffer = ByteArray(reqData)
            var read: Int
            //画像データを受信しbufferへ入れる
            do {
                read = dis.read(buffer)
                if (read  != -1) {
                    break
                }
    
            } while (true)
    
            out?.close()
            socket?.close()
    
[/code]

**Python側**

[code]

    import socket
    import numpy as np
    import time
    from PIL import Image
    import io
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)#ソケットオブジェクト作成
    s.bind(("IPアドレス", ポート番号))    # サーバーのipと使用するポート
    
    print("接続待機中")
    while(True):
        s.listen(1)                     # 接続要求を待機
        soc, addr = s.accept()          # 要求が来るまでブロック
        print(str(addr)+"と接続完了")
    
    　　binary = len(f.read())
       filesize = '%s' % binary
    
       soc.sendall(filesize.encode(encoding='utf-8'))  #クライアントへの返信
       image_pil = Image.open(image_path)
       output = io.BytesIO()
       image_pil.save(output, format='JPEG')
       image_jpg = output.getvalue()
       soc.sendall(image_jpg)
    
[/code]


CC BY-SA 4.0
2019-01-21T02:07:44.237
52155
2019-01-21T03:03:11.730
2019-01-21T03:03:11.730
31856
31856
question
python python3 kotlin websocket socket
socket通信でpythonからkotlinへ画像を送ろうとしても不完全な状態になる