⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 socketmidlet.txt

📁 j2me socket连接
💻 TXT
字号:
package com.mobile;

import javax.microedition.midlet.*;

import javax.microedition.io.*;

import javax.microedition.lcdui.*;

import java.io.*;

public class SocketMIDlet extends MIDlet implements CommandListener {

 private static final String SERVER = "Server";

 private static final String CLIENT = "Client";

 private static final String[] names = { SERVER, CLIENT };

 private static Display display;

 private Form f;

 private ChoiceGroup cg;

 private boolean isPaused;

 private Server server;

 private Client client;

 private Command exitCommand = new Command("Exit", Command.EXIT, 1);

 private Command startCommand = new Command("Start", Command.ITEM, 1);

 public SocketMIDlet() {

  display = Display.getDisplay(this);

  f = new Form("Socket Demo");

  cg = new ChoiceGroup("Please select peer", Choice.EXCLUSIVE, names,

    null);

  f.append(cg);

  f.addCommand(exitCommand);

  f.addCommand(startCommand);

  f.setCommandListener(this);

  display.setCurrent(f);

 }

 public boolean isPaused() {

  return isPaused;

 }

 public void startApp() {

  isPaused = false;

 }

 public void pauseApp() {

  isPaused = true;

 }

 public void destroyApp(boolean unconditional) {
  if (server != null) {

   server.stop();

  }
  if (client != null) {

   client.stop();

  }
 }

 public void commandAction(Command c, Displayable s) {

  if (c == exitCommand) {

   destroyApp(true);

   notifyDestroyed();

  } else if (c == startCommand) {

   String name = cg.getString(cg.getSelectedIndex());

   if (SERVER.equals(name)) {

    server = new Server(this);

    server.start();

   } else {

    client = new Client(this);

    client.start();

   }

  }

 }

}


package com.mobile;

import javax.microedition.midlet.*;

import javax.microedition.io.*;

import javax.microedition.lcdui.*;

import java.io.*;

public class Server implements Runnable, CommandListener {

 private SocketMIDlet parent;

 private Display display;

 private Form f;

 private StringItem si;

 private TextField tf;

 private boolean stop;

 private Command sendCommand = new Command("Send", Command.ITEM, 1);

 private Command exitCommand = new Command("Exit", Command.EXIT, 1);

 DataInputStream is;

 DataOutputStream os;

 SocketConnection sc;

 ServerSocketConnection scn=null;

 Sender sender;

 public Server(SocketMIDlet m) {

  parent = m;

  display = Display.getDisplay(parent);

  f = new Form("Socket Server");

  si = new StringItem("Status:", " ");

  tf = new TextField("Send:", "", 30, TextField.ANY);

  f.append(si);

  f.append(tf);

  f.addCommand(exitCommand);

  f.setCommandListener(this);

  display.setCurrent(f);

 }

 public void start() {

  Thread t = new Thread(this);

  t.start();

 }

 public void run() {

  try {

   si.setText("Waiting for connection");

   scn = (ServerSocketConnection) Connector.open("socket://:5009");

   // Wait for a connection.

   sc = (SocketConnection) scn.acceptAndOpen();

   si.setText("Connection accepted");

   is = sc.openDataInputStream();

   os = sc.openDataOutputStream();
   
   sender = new Sender(os);

   // Allow sending of messages only after Sender is created

   f.addCommand(sendCommand);

   while (true) {

    
    
    String str="";
    String strapend="";
    while (((str = is.readUTF())!= null) && (!str.equals("\r\n"))) {
    //ss=ss+(char) c
    System.out.println("Server:"+str);
    strapend=strapend+str;

    }

    if (str == null) {

     break;

    }

    // Display message to user
    
    si.setText("Message received - " + strapend);
   }

   stop();

   si.setText("Connection is closed");

   f.removeCommand(sendCommand);

  } catch (IOException ioe) {

   if (ioe.getMessage().equals("ServerSocket Open")) {

    Alert a = new Alert("Server", "Port 5000 is already taken.",

      null, AlertType.ERROR);

    a.setTimeout(Alert.FOREVER);

    a.setCommandListener(this);

    display.setCurrent(a);

   } else {

    if (!stop) {

     ioe.printStackTrace();

    }

   }

  } catch (Exception e) {

   e.printStackTrace();

  }

 }

 public void commandAction(Command c, Displayable s) {

  if (c == sendCommand && !parent.isPaused()) {

   sender.send(tf.getString());

  }

  if ((c == Alert.DISMISS_COMMAND) || (c == exitCommand)) {

  parent.destroyApp(true);
   parent.notifyDestroyed();

   

  }

 }

 /**

  * Close all open streams

  */

 public void stop() {

  try {

   stop = true;

   if (is != null) {

    is.close();

   }

   if (os != null) {

    os.close();

   }

   if (sc != null) {

    sc.close();

   }

   if (scn != null) {

    scn.close();

   }

  } catch (IOException ioe) {

  }

 }

}
---------------
package com.mobile;

import javax.microedition.midlet.*;

import javax.microedition.io.*;

import javax.microedition.lcdui.*;

import java.io.*;

public class Client implements Runnable, CommandListener {

 private SocketMIDlet parent;

 private Display display;

 private Form f;

 private StringItem si;

 private TextField tf;

 private boolean stop=false;

 private Command sendCommand = new Command("Send", Command.ITEM, 1);

 private Command exitCommand = new Command("Exit", Command.EXIT, 1);

 DataInputStream is;

 DataOutputStream os;

 SocketConnection sc;

 Sender sender;

 public Client(SocketMIDlet m) {

  parent = m;

  display = Display.getDisplay(parent);

  f = new Form("Socket Client");

  si = new StringItem("Status:", " ");

  tf = new TextField("Send:", "", 30, TextField.ANY);
  
  f.append(si);

  f.append(tf);

  f.addCommand(exitCommand);

  f.addCommand(sendCommand);

  f.setCommandListener(this);

  display.setCurrent(f);

 }

 /**

  * Start the client thread

  */

 public void start() {

  Thread t = new Thread(this);

  t.start();

 }

 public void run() {

  try {

   sc = (SocketConnection) Connector.open("socket://localhost:5009");

   si.setText("Connected to server");

   is = sc.openDataInputStream();

   os = sc.openDataOutputStream();

   // Start the thread for sending messages - see Sender's main

   // comment for explanation

   sender = new Sender(os);

   // Loop forever, receiving data

   while (true) {

    StringBuffer sb = new StringBuffer();

    int c = 0;
    String str="";
    String strapend="";
    while (((str = is.readUTF())!= null) && (!str.equals("\r\n"))) {
    //ss=ss+(char) c
    System.out.println("Client:"+str);
    //strapend=strapend+str;

    }

    if (str == null) {

     break;

    }

    // Display message to user
    
    si.setText("Message received - " + strapend);

   }

   stop();

   si.setText("Connection closed");

   f.removeCommand(sendCommand);

  } catch (ConnectionNotFoundException cnfe) {

   Alert a = new Alert("Client", "Please run Server MIDlet first",

     null, AlertType.ERROR);

   a.setTimeout(Alert.FOREVER);

   a.setCommandListener(this);

   display.setCurrent(a);

  } catch (IOException ioe) {

   if (!stop) {

    ioe.printStackTrace();

   }

  } catch (Exception e) {

   e.printStackTrace();

  }

 }

 public void commandAction(Command c, Displayable s) {

  if (c == sendCommand && !parent.isPaused()) {

   sender.send(tf.getString());

  }

  if ((c == Alert.DISMISS_COMMAND) || (c == exitCommand)) {
  parent.destroyApp(true);
   parent.notifyDestroyed();

   

  }

 }

 /**

  * Close all open streams

  */

 public void stop() {

  try {

   stop = true;

   if (sender != null) {

    sender.stop();

   }

   if (is != null) {

    is.close();

   }

   if (os != null) {

    os.close();

   }

   if (sc != null) {

    sc.close();

   }

  } catch (IOException ioe) {

  }

 }

}

------------------------------------

package com.mobile;

import javax.microedition.midlet.*;

import javax.microedition.io.*;

import javax.microedition.lcdui.*;

import java.io.*;

public class Sender extends Thread {

 private DataOutputStream os;

 private String message;

 public Sender(DataOutputStream os) {

  this.os = os;

  start();

 }

 public synchronized void send(String msg) {
 
  message = msg;
  
  notify();
  System.out.println("1212121212");
 }

 public synchronized void run() {
 
  while (true) {

   // If no client to deal, wait until one connects

   if (message == null) {

    try {

     wait();

    } catch (InterruptedException e) {

    }

   }

   if (message == null) {
   
   break;
   
   }

   try {
   
   os.writeUTF(message);
   os.writeUTF("\r\n");

   } catch (IOException ioe) {
   ioe.printStackTrace();

   }

   // Completed client handling, return handler to pool and

   // mark for wait

   message = null;

  }

 }

 public synchronized void stop() {
 
  message = null;

  notify();

 }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -