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

📄 socketconnector.java

📁 j2me编写的游戏基础引擎,作为学习很不错.
💻 JAVA
字号:
package engine.optional.network;

import javax.microedition.lcdui.*;
import javax.microedition.rms.*;
import javax.microedition.io.*;
import java.util.*;
import java.io.*;
import engine.kernel.*;

/**
*	Socket连接器
*	@author 贾永明
*	@version 2.8.0
*	@since HuoHouStudioEngine1.0
*/
final class SocketConnector implements NetworkListener{
	/**
	*	Socket连接器是否启动,true:启动,false:不启动。
	*/
	private boolean isStartup;
	/**
	*	constructor。
	*/
	SocketConnector(){
		try{
			NetworkManager.streamConnection = (StreamConnection)Connector.open("socket://" + NetworkManager.url, Connector.READ_WRITE, true);
			//打开请求流
			NetworkManager.request = NetworkManager.streamConnection.openDataOutputStream();
			//打开响应流
			NetworkManager.response = NetworkManager.streamConnection.openDataInputStream();
		}catch(Throwable t){
			EngineManager.debugEngine(t, null);
			//连接过程中发生了异常,需要用错误数据处理方法分析原因
			try{
				NetworkConnector.removeEvents = NetworkManager.networkRequestHandle.errorDataHandle((t instanceof ConnectionNotFoundException ? NetworkManager.INVALID_CONNECTION_ERROR : NetworkManager.CONNECTED_DATA_ERROR), ++NetworkManager.failedTimes);
			}catch(Throwable tt){
				EngineManager.debugEngine(tt, null);
			}
		}
	}
	/**
	*	加入网络事件。
	*	@param <b>_eventBody</b> 加入的网络事件的事件主体,具体由使用者自己写入。
	*	@throws Exception 一切可能产生的异常。
	*/
	public final void addEvent(byte[] _eventBody) throws Exception{
		try{
			if(NetworkManager.request != null){//socket连接直接写入请求数据
				NetworkManager.request.write(_eventBody);
			}
		}finally{
			//唤醒连接器
			NetworkManager.networkConnector.wakeUp();
		}
	}
	/**
	*	关闭监听。
	*/
	public final void terminate(){
		isStartup = false;
		//关闭所有的流
		NetworkManager.closeAllIO();
	}
	/**
	*	网络管理器主体。<br>
	*	如果网络引擎还没有启动,运行到此会被忽略。
	*/
	public final void run(){
		if(NetworkManager.isStartup){
			isStartup = true;
			while(isStartup){
				try{
					//连接成功,失败次数清零
					NetworkManager.failedTimes = 0;
					NetworkConnector.removeEvents = NetworkManager.networkRequestHandle.correctDataHandle(NetworkManager.response);
				}catch(Throwable t){
					EngineManager.debugEngine(t, null);
					if(!(t instanceof InterruptedIOException)){
						//连接过程中发生了异常,需要用错误数据处理方法分析原因
						try{
							NetworkConnector.removeEvents = NetworkManager.networkRequestHandle.errorDataHandle((t instanceof ConnectionNotFoundException ? NetworkManager.INVALID_CONNECTION_ERROR : NetworkManager.CONNECTED_DATA_ERROR), ++NetworkManager.failedTimes);
						}catch(Throwable tt){
							EngineManager.debugEngine(tt, null);
						}
					}
				}
			}
		}
	}
}

⌨️ 快捷键说明

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