Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #28762 > unrolled thread

two android applications connected with TCP protocol

Started bydanymota19@gmail.com
First post2014-06-17 10:39 -0700
Last post2014-06-17 14:17 -0500
Articles 2 — 2 participants

Back to article view | Back to comp.lang.java.programmer


Contents

  two android applications connected with TCP protocol danymota19@gmail.com - 2014-06-17 10:39 -0700
    Re: two android applications connected with TCP protocol Joshua Cranmer 🐧 <Pidgeot18@verizon.invalid> - 2014-06-17 14:17 -0500

#28762 — two android applications connected with TCP protocol

Fromdanymota19@gmail.com
Date2014-06-17 10:39 -0700
Subjecttwo android applications connected with TCP protocol
Message-ID<773cdb5e-80da-411b-b00c-c85d2afb1e05@googlegroups.com>
I'm trying to make two android applications connected with TCP protocol.
Client has an imageView and when you push the button, it is supposed to send that image to the server and after server reads it, it is suppose to display the image.
but I haven't been able to display the sent image in server. 
somebody could please give me a hand?

THIS IS MY SERVER CODE THAT GETS THE IMAGE AND IT IS SUPPOSE TO DISPLAY IT 

    		package com.example.simpleserver;

		import java.io.DataInputStream;
		import java.io.IOException;
		import java.io.InputStream;
		import java.net.ServerSocket;
		import java.net.Socket;

		import android.app.Activity;
		import android.graphics.Bitmap;
		import android.graphics.BitmapFactory;
		import android.os.Bundle;
		import android.os.Handler;
		import android.os.Message;
		import android.widget.ImageView;
		import android.widget.TextView;

		 public class SimpleServer extends Activity {
		   ServerSocket ss = null;
		   Thread myCommsThread = null;
		   protected static final int MSG_ID = 0x1337;
		   public static final int SERVERPORT = 6000;
		   private Bitmap bitmap;

		   @Override
		  public void onCreate(Bundle savedInstanceState) {
		   super.onCreate(savedInstanceState);
		   setContentView(R.layout.activity_simple_server);
		   TextView tv = (TextView) findViewById(R.id.textView01);
		   tv.setText("Nothing from client yet");
		   this.myCommsThread = new Thread(new CommsThread());
		   this.myCommsThread.start();
		   }

		   @Override
		   protected void onStop() {
		   super.onStop();
		   try {
				// make sure you close the socket upon exiting
			   ss.close();
			} catch (IOException e) {
			   e.printStackTrace();
			}
		   }

		   Handler myUpdateHandler = new Handler() {
			public void handleMessage(Message msg) {
				switch (msg.what) {
					case MSG_ID:
						 ImageView tv = (ImageView) findViewById(R.id.imageViewServer);
						 tv.setImageBitmap(bitmap);
						 break;
					   default:
						   break;
					   }
				 super.handleMessage(msg);
			 }
		  };
		   class CommsThread implements Runnable {
			public void run() {
			   Socket s = null;
				try {
				ss = new ServerSocket(SERVERPORT );
			} catch (IOException e) {
				e.printStackTrace();
			}
			while (!Thread.currentThread().isInterrupted()) {
				Message m = new Message();
				m.what = MSG_ID;
				
				try {
					if (s == null)
						s = ss.accept();
					InputStream in = s.getInputStream();
					DataInputStream dis = new DataInputStream(in);

					int len = dis.readInt();
					byte[] data = new byte[len];
					if (len > 0) {
						dis.readFully(data);
					}
					bitmap = BitmapFactory.decodeByteArray(data , 0, data .length);
					myUpdateHandler.sendMessage(m);
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		}
		}

AND THIS IS MY CLIENT CODE THAT SENDS THE IMAGE

    		package com.example.simpleclient;

		import java.io.DataOutputStream;
		import java.io.IOException;
		import java.io.OutputStream;
		import java.net.InetAddress;
		import java.net.Socket;
		import java.net.UnknownHostException;
		import java.nio.ByteBuffer;

		import android.app.Activity;
		import android.graphics.Bitmap;
		import android.graphics.drawable.BitmapDrawable;
		import android.os.Bundle;
		import android.view.View;
		import android.widget.ImageView;

		public class SimpleClient extends Activity {

			private Socket socket;

			private static final int SERVERPORT = 5000;
			private static final String SERVER_IP = "10.0.2.2";

			@Override
			public void onCreate(Bundle savedInstanceState) {
				super.onCreate(savedInstanceState);
				setContentView(R.layout.activity_simple_client);		
				new Thread(new ClientThread()).start();
			}

			public void onClick(View view) {
				try {;
					getBytes();
					
				} catch (UnknownHostException e) {
					e.printStackTrace();
				} catch (IOException e) {
					e.printStackTrace();
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
			public void getBytes() throws IOException{
				ImageView iv=(ImageView)findViewById(R.id.imageView1);
				//convert the image to bitmap to be send in the intent
				Bitmap bmp=((BitmapDrawable)iv.getDrawable()).getBitmap();
				int bytes = bmp.getByteCount();
				ByteBuffer buffer = ByteBuffer.allocate(bytes); //Create a new buffer
				bmp.copyPixelsToBuffer(buffer); //Move the byte data to the buffer
				
				byte[] array = buffer.array(); 
				int start=0;
				int len=array.length;
				if (len < 0)
					throw new IllegalArgumentException("Negative length not allowed");
				if (start < 0 || start >= array.length)
					throw new IndexOutOfBoundsException("Out of bounds: " + start);

				OutputStream out = socket.getOutputStream(); 
				DataOutputStream dos = new DataOutputStream(out);

				dos.writeInt(len);
				if (len > 0) {
					dos.write(array, start, len);
				}
				
			}

			class ClientThread implements Runnable {

				@Override
				public void run() {

					try {
						InetAddress serverAddr = InetAddress.getByName(SERVER_IP);

						socket = new Socket(serverAddr, SERVERPORT);

					} catch (UnknownHostException e1) {
						e1.printStackTrace();
					} catch (IOException e1) {
						e1.printStackTrace();
					}

				}

			}
		}

[toc] | [next] | [standalone]


#28763

FromJoshua Cranmer 🐧 <Pidgeot18@verizon.invalid>
Date2014-06-17 14:17 -0500
Message-ID<lnq48o$74p$1@dont-email.me>
In reply to#28762
On 6/17/2014 12:39 PM, danymota19@gmail.com wrote:
> I'm trying to make two android applications connected with TCP protocol.
> Client has an imageView and when you push the button, it is supposed to send that image to the server and after server reads it, it is suppose to display the image.
> but I haven't been able to display the sent image in server.
> somebody could please give me a hand?

Maybe this:
> 		   public static final int SERVERPORT = 6000;
...
> 			private static final int SERVERPORT = 5000;
might be the cause of your problems?

-- 
Beware of bugs in the above code; I have only proved it correct, not 
tried it. -- Donald E. Knuth

[toc] | [prev] | [standalone]


Back to top | Article view | comp.lang.java.programmer


csiph-web