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

📄 netbridgeserver.java

📁 j2me实现的移动机器人代码(Java实现)
💻 JAVA
字号:
package name.lxm.robot.arch.module;

import name.lxm.robot.arch.*;
import java.net.*;
import java.io.*;
import org.jdom.*;
import org.jdom.output.*;

/**
 * This class is used to send messages to client module
 * and get command from the client side
 */
public class NetBridgeServer implements Module, Runnable
{
	private ModuleDoc doc = null;
	private String module_name = null;
	private SimpleInPort data_port = null;
	private SimpleOutPort cmd_port = null;
	private String[] port_names = {"data", "cmd"};
	
	private int listen_port = 80;
	private ServerSocket ssocket = null;
	private String verifyString = null;
	private Thread this_thread = null;
	private boolean bRun = false;

	public NetBridgeServer()
	{
		data_port = new SimpleInPort(this, port_names[0]);
		cmd_port = new SimpleOutPort(this, port_names[1]);
	}
	
	public String getName()
	{
		return module_name;
	}

	public Port getPort(String name)
	{
		if(port_names[0].equals(name))
		{
			return data_port;
		}
		if(port_names[1].equals(name))
		{
			return cmd_port;
		}
		return null;
	}
	
	public ModuleDoc getModuleDoc()
	{
		return doc;
	}
	
	public int getLayer()
	{
		return doc.getLayer();
	}

	public void init(ModuleDoc cfg) throws Exception
	{
		doc = cfg;
		module_name = cfg.getName();
		if(cfg.getParamValue("listen_port") !=null)
		{
			listen_port = Integer.parseInt(cfg.getParamValue("listen_port"));
		}
		verifyString = cfg.getParamValue("verify_string");
	}
	
	public void start() throws Exception
	{
		ssocket = new ServerSocket(listen_port);
		this_thread = new Thread(this);
		bRun = true;
		this_thread.start();
	}
	
	public void stop() throws Exception
	{
		bRun = false;
		ssocket.close();
	}
	
	public void destroy() throws Exception
	{
	}

	public void run()
	{
		while(bRun)
		{
			acceptConnection();
		}
	}

	private void acceptConnection()
	{
		Socket s;
		BufferedReader br;
		PrintWriter pw;
		String line;
		boolean bValid = false;
		int p = 0;
		try{
			s = ssocket.accept();
			br = new BufferedReader(new InputStreamReader(s.getInputStream()));
			pw = new PrintWriter(new OutputStreamWriter(s.getOutputStream()));
			//check the verify string
			while((line = br.readLine()) != null)
			{
				if(line.equals(""))
					break;
				if((p=line.indexOf(verifyString)) != -1)
				{
					bValid = true;
					//extract the company command string
					String ss = line.substring(p+verifyString.length()+1);
					cmd_port.setValue(this, ss, 1000);
					break;
				}
			}
			
			if(!bValid)
				pw.println("No one knows who you are!");
			else
			{
				pw.println("HTTP/1.1 200 OK\nContent-type:text/xml");
				pw.println();
				//put the data content here
				Object o = data_port.getValue2();
				if(o != null)
				{
					((Message) o).send2Writer(pw);
					System.out.print("c");
				}else
					pw.println("Null Data.");
			}
			pw.close();
			br.close();
			s.close();
		}catch(SocketException e)
		{
			e.printStackTrace();
		}catch(Exception e)
		{
			e.printStackTrace();
		}
	}
}

⌨️ 快捷键说明

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