📄 server.java
字号:
package datagram003packet;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Displayable;
import javax.microedition.io.*;//use the datagramconnetion
import java.io.*;//use the inputstream outputstream
import javax.microedition.lcdui.*;//use the ui
public class Server extends Form implements Runnable, CommandListener {
private Datagram_MIDlet dm;
private Display display;
//public Form form;
private TextField get_mesg;
private TextField history;
private TextField send_mesg;
private Command exitCommand;
private Command sendCommand;
private DatagramConnection dc;
private Sender sender;
private boolean running=false;
private String address;
////////
private SendImage si;
private Command sendImage;
private Command selectImage;
private ImageItem ii;
private Image image;
///
private ImageItems iis;
public String img_path="/11.PNG";
public Server(Datagram_MIDlet dm)
{
super("Chat_Server");
this.dm=dm;
display=Display.getDisplay(dm);
//form=new Form("Chat_Server");
get_mesg=new TextField("GetMesg:",null,200,TextField.ANY);
history=new TextField("History:",null,200,TextField.ANY);
send_mesg=new TextField("SendMesg:",null,200,TextField.ANY);
exitCommand=new Command("Exit",Command.EXIT,1);
sendCommand=new Command("Send",Command.OK,1);
sendImage=new Command("SendImage",Command.OK,1);
selectImage=new Command("SelectImage",Command.OK,1);
this.append(get_mesg);
this.append(history);
this.append(send_mesg);
//
ii=new ImageItem("Hava a Look",null,ImageItem.LAYOUT_CENTER,"无法显示图片");
this.append(ii);
//
this.addCommand(exitCommand);
this.setCommandListener(this);
display.setCurrent(this);
}
//creat startRun()
public void startRun()
{
running=true;
Thread tt=new Thread(this);
tt.start();
}
//creat stopRun()
public void stopRun()
{
running=false;
}
public void run() {
// TODO 自动生成方法存根
try
{
dc=(DatagramConnection)javax.microedition.io.Connector.open("datagram://:5555");
sender=new Sender(dc);
this.addCommand(sendCommand);
this.addCommand(selectImage);
this.addCommand(sendImage);
while(running)
{
Datagram dg=dc.newDatagram(5500);
dc.receive(dg);
System.out.println("你所收到的字节长度为:"+dg.getData().length);
if(dg.getLength()>300)
{
byte []buf=dg.getData();
image=Image.createImage(buf,0,buf.length);
ii.setImage(image);
}
else
{
address=dg.getAddress();
byte[]buf=dg.getData();
ByteArrayInputStream bis=new ByteArrayInputStream(buf);
DataInputStream dis=new DataInputStream(bis);
String str_temp=dis.readUTF();
get_mesg.setString(str_temp);
System.out.println("Server.Run()::"+str_temp);
}
}
stop();
}
catch(Exception e)
{
e.printStackTrace();
}
}
//创建一个关闭流连接的函数
public void stop()
{
try
{
if(dc!=null)
{
dc.close();
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
public void commandAction(Command c, Displayable d) {
// TODO 自动生成方法存根
if(c==sendCommand)
{
sender.send(send_mesg.getString(), address);
history.setString(send_mesg.getString());
send_mesg.setString("");
}
else if(c==exitCommand)
{
try
{
dm.destroyApp(true);
dm.notifyDestroyed();
}
catch(Exception e)
{
e.printStackTrace();
}
}
else if(c==selectImage)
{
iis=new ImageItems(display,this);
display.setCurrent(iis);
//this.img_path=iis.getPath();这种思想绝对是要不的,是不成立的嘿嘿....
///
//display.setCurrent(this);
}
else if(c==sendImage)
{
try
{
System.out.println("image::"+img_path);
////
si=new SendImage(dc);
InputStream is=this.getClass().getResourceAsStream(img_path);
int img_length=is.available();//获取图象大小
System.out.println("img_length:"+img_length);
byte[]buf=new byte[img_length];
System.out.println(buf.length);
is.read(buf,0, buf.length);//获取图象数据
//测试图象数据的完整性
image=Image.createImage(buf,0, buf.length);
ii.setImage(image);
System.out.println("即将发送图片");
si.sendImage(buf, address);
System.out.println("发送图片成功");
System.out.println("Server.run().buf.length"+buf.length);
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -