1

クライアントが受信した画像を表示し、その画像をサーバーに表示したいのですが、画像部分は後で実行するために残し、最初は入力ストリームを受信して​​印刷するだけです。

問題は、クライアントリクエストを受け入れているが、デコードされた文字列を出力しないことです。decodedString = Base64.decodeBase64(base64Code);

サーバーのコードは次のとおりです

import java.net.*;
import java.io.*;

import org.apache.commons.codec.binary.Base64;
import java.awt.*;

import javax.swing.*;


public class server {
private static DataInputStream dataInputStream;


private static DataOutputStream dataOutputStream;

public static void main(String[] args) throws IOException {
// create socket
ServerSocket servsock = new ServerSocket(14789);

Socket sock = servsock.accept();
dataInputStream = new DataInputStream(sock.getInputStream());
dataOutputStream = new DataOutputStream(sock.getOutputStream());
System.out.println("Accepted connection : " + sock);


String base64Code = dataInputStream.readUTF();

byte[] decodedString = null;

decodedString =  Base64.decodeBase64(base64Code);
System.out.println("Image Successfully Manipulated!" + decodedString);

if (dataOutputStream != null) {
try {
dataOutputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

if (dataInputStream != null) {
try {
dataInputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}



sock.close();
}


public static String encodeImage(byte[] imageByteArray) {
return Base64.encodeBase64String(imageByteArray);
}
}

どんな助けでも大歓迎です。

4

1 に答える 1

0

バイトの配列、コードを出力することはできません

System.out.println("Image Successfully Manipulated!" + decodedString);

次のようなものを印刷します

Image Successfully Manipulated![B@1cd2e5f

バイト配列を文字列として出力する場合は、たとえば次のように、バイト配列を16進文字列に変換する必要があります。

public static String byteArrayToHexString(byte[] b)
{
    StringBuffer sb = new StringBuffer(b.length * 2);
    for (int i = 0; i < b.length; i++)
    {
        int v = b[i] & 0xff;
        if (v < 16)
        {
            sb.append('0');
        }
        sb.append(Integer.toHexString(v));
    }
    return sb.toString().toUpperCase();
}
于 2012-12-08T21:35:47.647 に答える