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

📄 server.java

📁 运用HTTPCONNECTION做一个简单的聊天程序
💻 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 + -