Socket是套接字,它是基于TCP协议的传输。

在J2ME开发Socket的流程:

1. 服务器监听某个端口
2. 客户端连接服务器的某个端口
3.通过Socket通讯

在J2ME开发包javax.microedition.io中包含了 HttpConnection, HttpsConnection, SocketConnection,ServerSocketConnection和UDPDatagramConnection类,其中输入流和输出流 包含在java.io包中,
这里主要用到的是SocketConnection和ServerSocketConnection这两个类;

代码如下

服务器端:


 
Java代码  收藏代码
  1.  try {    
  2.   //监听1234端口  
  3. ServerSocketConnection ssc = (ServerSocketConnection) Connector.open("socket://1234");  
  4.         SocketConnection sc = (SocketConnection) ssc.acceptAndOpen(); //等待客户连接,如果客户没有连接的话,这里程序就会在这阻塞  
  5.           
  6.     } catch (IOException e) {  
  7.         e.printStackTrace();  
  8.     }     
  9.    


客户端

  
Java代码  收藏代码
  1. try {    
  2.                                                                     //连接服务器1234端口  
  3.     SocketConnection sc = (SocketConnection) Connector.open("socket:127.0.0.1//1234");  
  4. catch (IOException e) {  
  5.     e.printStackTrace();  
  6. }  
  7.    



通过以上代码这样就能客户端与服务器端通信了,其中服务器端的SocketConnection 对象sc与客服端的SocketConnection 对象sc 是同一个对象。SocketConnection几个常用的方法有:
 
  getAddress();得到客户端地址
  setSocketOption:设置一些参数,一般可以用默认
  openDataInputStream / openInputStream; 打开输入流
  openDataOutputStream / openOutputStream; 打开输出流


例当客服器端向服务器端发送一个字符串,同样在服务器端能够打印出来,代码如下:

服务器端

Java代码  收藏代码
  1. package com.easymorse;  
  2.   
  3. import java.io.DataInputStream;  
  4. import java.io.IOException;  
  5.   
  6. import javax.microedition.io.Connector;  
  7. import javax.microedition.io.ServerSocketConnection;  
  8. import javax.microedition.io.SocketConnection;  
  9. import javax.microedition.midlet.MIDlet;  
  10. import javax.microedition.midlet.MIDletStateChangeException;  
  11.   
  12. public class ServerMIdlet extends MIDlet {  
  13.   
  14.     public ServerMIdlet() {  
  15.           
  16.     }  
  17.   
  18.     protected void destroyApp(boolean arg0) throws MIDletStateChangeException {  
  19.   
  20.     }  
  21.   
  22.     protected void pauseApp() {  
  23.   
  24.     }  
  25.   
  26.     protected void startApp() throws MIDletStateChangeException {  
  27.   
  28.         try {    
  29.                                                                                 //监听1234端口  
  30.             ServerSocketConnection ssc = (ServerSocketConnection) Connector.open("socket://1234");  
  31.             SocketConnection sc = (SocketConnection) ssc.acceptAndOpen(); //等待客户连接,如果客户没有连接的话,这里程序就会在这阻塞  
  32.             DataInputStream dis = (DataInputStream) sc.openDataInputStream();  
  33.             String msg = dis.readUTF();  
  34.             System.out.println(msg);  
  35.               
  36.         } catch (IOException e) {  
  37.             e.printStackTrace();  
  38.         }  
  39.     }  
  40.   
  41. }  
  42.   
  43.    



客户端:
Java代码  收藏代码
  1.  package com.easymorse;  
  2.   
  3. import java.io.DataOutputStream;  
  4. import java.io.IOException;  
  5.   
  6. import javax.microedition.io.Connector;  
  7. import javax.microedition.io.ServerSocketConnection;  
  8. import javax.microedition.io.SocketConnection;  
  9. import javax.microedition.midlet.MIDlet;  
  10. import javax.microedition.midlet.MIDletStateChangeException;  
  11.   
  12. public class ClientSocketMIDlet extends MIDlet {  
  13.   
  14.     public ClientSocketMIDlet() {  
  15.     }  
  16.   
  17.     protected void destroyApp(boolean unconditional)  
  18.             throws MIDletStateChangeException {  
  19.   
  20.     }  
  21.   
  22.     protected void pauseApp() {  
  23.   
  24.     }  
  25.   
  26.     protected void startApp() throws MIDletStateChangeException {  
  27.   
  28.         try {    
  29.                                                                         //连接服务器1234端口  
  30.             SocketConnection sc = (SocketConnection) Connector.open("socket:127.0.0.1//1234");  
  31.             DataOutputStream dos = sc.openDataOutputStream();  
  32.             dos.writeUTF("你好服务器");  
  33.               
  34.         } catch (IOException e) {  
  35.             e.printStackTrace();  
  36.         }  
  37.           
  38.           
  39.     }  
  40.   
  41. }  
  42.   
  43.    
分享到:
posted on 2013-03-06 13:44  爱哎唉  阅读(237)  评论(0)    收藏  举报