Programming Tutorials

(追記) (追記ここまで)

Client Server in J2ME (Socket Programming sample)

By: David Hemphill in J2ME Tutorials on 2008年08月01日 [フレーム]

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.


(追記) (追記ここまで)


Add Comment

JavaScript must be enabled for certain features to work
* Required information
1000

Comments

No comments yet. Be the first!
(追記) (追記ここまで)
(追記) (追記ここまで)

AltStyle によって変換されたページ (->オリジナル) /