samedi 25 avril 2015

How to display image on client side using String,String is send Server?


My server sends string message to my client and the client reads the string.
String message is successfully sent, then this String is used for image identification.

I have done coding for this task but I can't run it.

Here is my class:

  private class ChatClientThread extends Thread {

    String name;
    String dstAddress;
    int dstPort;

    String msgToSend = "";
    boolean goOut = false;

    ChatClientThread(String name, String address, int port) {
        this.name = name;
        dstAddress = address;
        dstPort = port;
    }

    @Override
    public void run() {
        Socket socket = null;
        DataOutputStream dataOutputStream = null;
        DataInputStream dataInputStream = null;

        try {
            socket = new Socket(dstAddress, dstPort);
            dataOutputStream = new DataOutputStream(
            socket.getOutputStream());
            dataInputStream = new DataInputStream(socket.getInputStream());
            dataOutputStream.writeUTF(name);
            dataOutputStream.flush();
            int counter = 0;
            while (!goOut) {
                if (dataInputStream.available() > 0) {
                    msgLog += dataInputStream.readUTF();
                    // start editing
                    String[] separated = msgLog.split("\\,");

                    for (int i = 2; i < separated.length - 1; i += 2) {
                        String symbol = separated[i];
                        String num = separated[i + 1];
                        String resourceName = symbol + num;
                        int resID = getResources().getIdentifier(resourceName, "id", getPackageName());
                        ImageView im = (ImageView) findViewById(resID);
                        Context context = im.getContext();
                        int id = context.getResources().getIdentifier(resourceName, "drawable", context.getPackageName());
                        RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(im.getLayoutParams());
                        //43,0,0,0


                        lp.setMargins(counter * 65, 24, 40, 5); //left,right,top,bottom
                        im.setLayoutParams(lp);
                        im.setImageResource(id);
                        // im.setOnClickListener(this);
                        counter++;
                    }


                    /* MainActivity.this.runOnUiThread(new Runnable() {

                            @Override
                            public void run() {
                                chatMsg.setText(msgLog);
                            }
                        });*/
                }

                if (!msgToSend.equals("")) {
                    dataOutputStream.writeUTF(msgToSend);
                    dataOutputStream.flush();
                    msgToSend = "";
                }
            }

        } catch (UnknownHostException e) {
            e.printStackTrace();
            final String eString = e.toString();
            MainActivity.this.runOnUiThread(new Runnable() {

                @Override
                public void run() {
                    Toast.makeText(MainActivity.this, eString, Toast.LENGTH_LONG).show();
                }

            });
        } catch (IOException e) {
            e.printStackTrace();
            final String eString = e.toString();
            MainActivity.this.runOnUiThread(new Runnable() {

                @Override
                public void run() {
                    Toast.makeText(MainActivity.this, eString, Toast.LENGTH_LONG).show();
                }

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

            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();
                }
            }

            MainActivity.this.runOnUiThread(new Runnable() {

                @Override
                public void run() {
                    loginPanel.setVisibility(View.VISIBLE);
                    chatPanel.setVisibility(View.GONE);
                }

            });
        }

    }

    private void sendMsg(String msg) {
        msgToSend = msg;
    }

    private void disconnect() {
        goOut = true;
    }
  }

  }


Aucun commentaire:

Enregistrer un commentaire