java - Creating a simple Hello world Android Client-Server program -


to keep simple, i'm trying send message android emulator java console server on eclipse contains simple string, want server reply string. ofcourse; ill connect host 10.0.2.2 , use open port (in case 4000). server gets "connected" msg everytime click on connecting button on emulator, cant find way deliver packets or messages.

in case want read code, here's (what think is) long code simple task.

client package com.example.clienttest;

import java.io.ioexception; import java.io.objectinputstream; import java.io.objectoutputstream; import java.net.socket;  import android.os.bundle; import android.app.activity; import android.view.view; import android.widget.edittext; import android.widget.textview;  public class mainactivity extends activity {      thread m_objthreadclient;     socket clientsocket;     textview servermessage;     edittext clientmessage;     string sin, sout;     objectoutputstream oos;     objectinputstream ois;      @override     public void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_main);          servermessage = (textview) findviewbyid(r.id.textview1);         clientmessage = (edittext) findviewbyid(r.id.edittext1);      }       public void start(view view) throws ioexception{         final string text;         string send = " ";         text = clientmessage.gettext().tostring();         m_objthreadclient = new thread( new runnable(){             public void run()             {                 try {                     clientsocket = new socket("10.0.2.2", 4000);                     oos = new objectoutputstream (clientsocket.getoutputstream());                     oos.writeobject(text);                     oos.flush();                  } catch (ioexception e) {                     servermessage.settext(e.getmessage());                 }              }         });         servermessage.settext(send);          m_objthreadclient.start();      }  } 

and server

import java.net.serversocket; import java.net.socket;  import java.io.ioexception; import java.io.bufferedreader; import java.io.inputstreamreader; import java.io.objectinputstream; import java.io.objectoutputstream; import java.io.printwriter;  import java.util.hashtable;  public class server2 {      @suppresswarnings("resource")     public static void main (string[] args) throws ioexception {          serversocket server = null;           try {             server = new serversocket(4000);          } catch (ioexception e) {             system.err.println("could not start on: " + "4000" + "maby server open? or portforwording messup?");             system.err.println(e);             system.exit(1);         }          socket client = null;         while(true) {             try {                 client = server.accept();                 system.out.print("connected");             } catch (ioexception e) {                 system.err.println("accept failed.");                 system.err.println(e);             }              thread t = new thread(new clientconn(client));             t.start();         }     } }   class clientconn implements runnable {     private socket client;     objectinputstream ois;     objectoutputstream oos;      clientconn(socket client) {         this.client = client;         try {             ois = new objectinputstream(client.getinputstream());             string recv;             recv = ois.readline();              oos = new objectoutputstream(client.getoutputstream());             oos.writechars("welcome");             oos.flush();              oos.close();          } catch (ioexception e) {             system.err.println(e);             return;         }     }      public void run() {         string msg, response;         try {             system.out.print("checking");             while ((msg = ois.readline()) != null) {                 system.out.print(msg);             }         } catch (ioexception e) {             system.err.println(e);         }     }      public void sendmsg(string msg) throws ioexception {         oos.writechars(msg);     } } 

thanks~

some thoughts may or may not solve problem:

the method readline() objectinputstream deprecated. try using datainputstream instead. :

try {         outtoclient = new dataoutputstream(socket.getoutputstream());         infromclient = new datainputstream(socket.getinputstream()); } catch (ioexception e) {         // todo auto-generated catch block         e.printstacktrace(); } 

and :

infromclient.readline(); 

note read line continue read until encounters new line character '\n'. readline() block until reads newline.

try these things , see if help

edit: appears readline() datainputstream deprecated well, there several others methods should work. example readutf()


Comments

Popular posts from this blog

c# - How Configure Devart dotConnect for SQLite Code First? -

java - Copying object fields -

c++ - Clear the memory after returning a vector in a function -