5

受信した単一の画像を表示できますが、5 秒ごとに Android クライアントから送信される複数の画像を受信して​​ディスクに書き込みたいと考えています。

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

dataInputStream = new DataInputStream(sock.getInputStream());

byte[] base64=dataInputStream.readUTF().getBytes();

byte[] arr=Base64.decodeBase64(base64);

FileOutputStream imageOutFile = new FileOutputStream("E:\\image.jpeg");
imageOutFile.write(arr);
4

3 に答える 3

2

小さな変更:

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

int imagesCount = dataInputStream.readInt();
for (int imgNum = 0; imgNum < imagesCount; imgNum++) {
    int imgLen = dataInputStream.readInt();
    byte[] base64 = new byte[imgLen];
    dataInputStream.readFully(base64);

    byte[] arr = Base64.decodeBase64(base64);

    FileOutputStream imageOutFile = new FileOutputStream("E:\\image"+imgNum+".jpeg");
    imageOutFile.write(arr);
}
于 2013-01-06T00:08:02.303 に答える
0

複数のクライアントと単一のサーバーがある場合。マルチスレッドを試してください。コードのサンプル:

public static void main(String[] args){
    try {
        servSocket = new ServerSocket(xxxx);

        while(true)
        {

            socket = servSocket.accept();

            ClientNum++;

            for(int i=0;i<10;i++){ //this for eg accepts 10 clients, with each client assigned an ID. 

                if(threads[i]==null){
                    sockets[i]=socket; 

「実行」では、これらの各クライアントをそれぞれの ID で呼び出し、必要な reqd 関数を実行できます。これがどれほど明確かはわかりません。必要に応じて、私が持っているコード全体を送信できます。これは、あなたがやっていることと似ています。

于 2013-01-08T21:47:40.170 に答える