Client Server in J2ME (Socket Programming sample)

By David Hemphill Viewed: 31842 times Emailed: 210 times Printed: 222 times Bookmark and Share



Sockets are different than datagrams because they use a connection-based paradigm to transmit data. This means that both a sender and a receiver must be running and establish a communication channel for data to be exchanged. To use a real-world analogy, a socket connection is like calling a friend on the telephone. If the friend does not answer, a conversation cannot take place. Datagrams on the other hand are more like sending a letter to a friend, where a note is placed into an envelope, addressed, and mailed.

The following code demonstrates how to set up a listener to monitor a port for an inbound socket connection.


try
{
  ServerSocketConnection ssc = (ServerSocketConnection) 
  Connector.open("socket://:9002");
  StreamConnection sc = null;
  InputStream is = null;
  try{
    sc = ssc.acceptAndOpen();
    is = sc.openInputStream();
    int ch = 0;
    StringBuffer sb = new StringBuffer();
    while ((ch = is.read()) != -1){
      sb.append((char)ch);
    }
    System.out.println(sb.toString());
  } finally{
      ssc.close();
      sc.close();
      is.close();
  }
} catch (IOException x) {
    x.printStackTrace();
}
In this example a ServerSocketConnection is opened on port 9002. This type of connection is used for sole purpose of listening for an inbound socket connection. The code goes into a wait state when the acceptAndOpen() method is called. When a socket connection is established, the acceptAndOpen() method returns with an instance of a SocketConnection. Opening an input stream on this connection allows data to be read from the transmission.

The next example demonstrates the code required by the client to initiate the socket connection.


try{
  SocketConnection sc = (SocketConnection) 
    Connector.open("socket://localhost:9002");
  OutputStream os = null;
  try{
    os = sc.openOutputStream();
    byte[] data = "Hello from a socket!".getBytes();
    os.write(data);
  } finally{
      sc.close();
      os.close();
  }
} catch (IOException x){
	x.printStackTrace();
}
In this example a SocketConnection is established on port 9002 of the local machine. When using sockets, this is the point on the server side that the acceptAndOpen() method returns. If the connection is successfully opened, the OutputStream is obtained and a message is written to the stream. Note that because sockets are connection based, if there is no server listening for an incoming socket connection an exception will be thrown.


Comments(16)


1. not satisfied friend. for Socket class it asks to import java.net in J2ME

By: Gaurav at 2009-01-28 07:34:42
2. Hi Gaurav, The sample in this tutorial is just a code snippet (NOT THE COMPLETE MIDLET). Therefore you should import the required packages when you add this snippet into your midlet.

By: Ramlak at 2009-01-28 20:00:08
3. How make comunication between client and server, sending mensage between them ??????

By: alex at 2009-01-30 07:12:49
4. pls give me code for exact communication between client and server

By: SIRAJ at 2009-02-19 06:24:10
5. Thanks friend this code will really help me
i will used it in my own client server program
thanks once again

By: Anonymous at 2009-05-04 20:16:58
6. plz can u give me code for key excange b/n pda & apache server.

By: visnas at 2009-05-04 20:18:32
7. i am developing a video streaming pc server to j2me client system that the j2me player can playing video from pc server using wifi
please any one tell me the study material for the above project if some code is availabe for video streaming then send to my email address
ziaullah126@gmail.com
thanks in advance
i am waiting for expert help

By: ziathegreat at 2009-05-19 13:19:15
8. pls can any one have any idea about storing the call, means :when the sender press the button call and start speak it must be recorded in the buffer of mobile and the receiver listen to the call from the memory .
how can i do it in j2me

By: souhir at 2010-01-30 11:04:48
9. Hay can you send me complete code to make connection between server and client please...?
I am developing an application to record the calls received to a cellphone.. i am trying to use socket programming for client an server connection so please do help..
thank you in advance..

By: 9COOL at 2010-02-22 08:10:47
10. Hey this code is very helpful......can you please give some idea ...how to use an outputstream data from client app to some inputstream at server app.
i mean i want to use this for some streaming project...so i can stream from client n want to see that stream to another app which containing server part.


By: Preetam Purbia at 2010-03-01 04:25:47
11. Please send the complete code.. thanks!

By: Roger22 at 2010-03-11 00:41:07
12. Hi!
I would like to send a string from a j2me application to a PC. If somebody can send me sample codes I would be very grateful.

By: beetlebrain at 2010-03-26 06:02:00
13. Hi I need code examples J2ME for chating aplication. thank's . .

By: agus at 2010-04-03 04:16:11
14. i am developing a video streaming PC server to j2me client system that the j2me player can playing video from PC server
please any one tell me the study material for the above project if some code is available for video streaming then send to my email address
tota_music2@yahoo.com

By: lama at 2010-04-17 01:27:27
15. Thank ... for idea But
i m confuse how run my application on my mobile ..
My application is I m retriving MySql database from my PC and show on mobile. My application Perfactly run on Localhost
but deploying on Mobile its not run.
which url passing Connector.open(url); statment.
Actualy I try to say I want acces my PC Mysql database throw my mobile. What I do ..Plz Help Me

Thanks


By: Tanaji at 2010-06-01 23:13:19
16. This is starting program for me in j2me.This will be very useful for me in my project thank you..

By: Surya at 2010-07-26 03:29:47

Your name (required):


Your email(required, will not be shown to the public):


Your sites URL (optional):


Your comments:


Enter Code:
The Captcha image

Latest Tutorials

[2010-07-30]Code sample to Send SMS from a J2ME application.
[2009-05-29]Adding your own Application icon for your J2ME application (jar file)
[2008-08-18]Play a multimedia file in J2ME Program (Audio/Video) using MMAPI
[2008-08-01]Datagrams in J2ME (UDP Programming sample)
[2008-08-01]Client Server in J2ME (Socket Programming sample)
[2008-08-01]Using HttpConnection in J2ME (Retrieve web content from a website to a phone)
[2008-08-01]Using HTTP vs UDP vs Socket in J2ME
[2008-08-01]RMSCookieConnector - Using Cookies in J2ME
[2008-07-29]POST UTF-8 encoded data to the server in J2ME
[2008-07-10]lists, forms, choices, gauges, text fields, text boxes in J2ME
[2008-07-10]Using List to create a Menu and Menu items in J2ME
[2008-07-10]Using alerts and tickers in J2ME
[2008-07-07]J2ME Canvas sample to show games programming in J2ME
[2008-07-07]Timer and TimerTask example in J2ME
[2008-06-27]List of GPRS Access points for all countries

More Latest News

Most Viewed Articles (in last 30 days)
GUI components and menu based J2ME Applications.
Client Server in J2ME (Socket Programming sample)
Getting Started with J2ME
J2ME Canvas sample to show games programming in J2ME
Code sample to Send SMS from a J2ME application.
RMS Basics in J2ME
Using HttpConnection in J2ME (Retrieve web content from a website to a phone)
TextBox sample program in J2ME
'double buffering' Sample program in J2ME
Using List to create a Menu and Menu items in J2ME
Timer and TimerTask example in J2ME
Adding your own Application icon for your J2ME application (jar file)
What is J2ME?
Sample J2ME code that shows various functionality of RMS.
Play a multimedia file in J2ME Program (Audio/Video) using MMAPI
Most Emailed Articles (in last 30 days)
What is J2ME?
Download a file over a network in J2ME midlet
How to load J2ME applications to the IDEN handsets
Getting Started with J2ME
Y.S. Sun Green Building Research Center
Sample J2ME code that shows various functionality of RMS.
Sample Java program shows how to Read a file over a network using J2ME midlet
Types of configurations in J2ME
'LINK.EXE' is not recognized as an internal or ext
RMS Basics in J2ME
GUI components and menu based J2ME Applications.
Your first J2ME program and a midlet lifecycle explained.
The MIDP Networking Model in J2ME
What is J2ME?
paint() sample program to draw a line in J2ME