플래시 소켓 도 쿄 타이 란 트 연결

도 쿄 Tyrant 는 도 쿄 Cabinet 데이터베이스 네트워크 인터페이스 입 니 다.도 쿄 카 비 넷 은 DBM 데이터베이스 로 읽 기와 쓰기 가 매우 빠르다.도 쿄 Tyrant 는 Memcached 호 환 프로 토 콜 을 가지 고 있 으 며 HTTP 프로 토 콜 을 통 해 데이터 교환 을 할 수 있 습 니 다. 여기 서 사용 할 것 은 바 이 너 리 프로 토 콜 입 니 다.왜 일 까요?도 쿄 Tyrant 는 epoll / kqueue / eventports 로 'c10k' 문 제 를 해결 하고 HTTP 프로 토 콜 도 편리 하지만 짧 은 연결 은 요청 할 때마다 데 이 터 를 다시 연결 해 야 합 니 다.일부 부 클 라 이언 트 응용 프로그램 은 TCP 연결 을 유지 하고 싶 습 니 다. 플래시 가 제공 하 는 socket 으로 도 쿄 Tyrant 를 연결 하면 할 수 있 습 니 다.
인터넷 에는 도 쿄 Tyrant 를 실행 하 는 글 을 소개 하 는 글 이 많 습 니 다. Liux 환경 이 필요 합 니 다. windows 라면 colinux 로 테스트 할 수 있 습 니 다.windows 에 설치 하 는 것 이 매우 편리 하고 다운로드 할 물건 은 모두 몇 십 메 가 이 며, 가상 컴퓨터 가 전체 이미 지 를 내 려 놓 는 것 처럼 운행 이 매우 느리다.colinux 는 다른 windows 프로그램 처럼 성능 이 좋 습 니 다.같은 기계 windows 에 colinux 를 설치 하고 colinux 에서 nginx 를 달 리 는 것 은 windows 에 직접 달 리 는 apache 보다 빠르다.
도 쿄 타 이 런 트 가 실행 되면 다음 actionscript 테스트 를 통 해 IP 변경 에 주의 할 수 있 습 니 다.

package {
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.ProgressEvent;
	import flash.net.Socket;
	import flash.utils.ByteArray;
	import flash.utils.Endian;
	
	public class test extends Sprite
	{
		private var socket:Socket;		
		public function test()
		{
			socket = new Socket();			
			socket.addEventListener(Event.CONNECT,connectFun);
			socket.addEventListener(ProgressEvent.SOCKET_DATA,syncFun);
			socket.connect("192.168.0.6",1978);
		}
		private function connectFun(e:Event):void{
		  	trace("    ");		  			
			testput();
		}		
		private function syncFun(e:ProgressEvent):void{
		  if(socket.bytesAvailable == 1){//put    1byte
		  	trace(socket.readByte());//0    
		  	testget();
		  }else{//get  
		  	trace(socket.readByte());//0    
			var n:int = socket.readInt();
			trace(socket.readUTFBytes(n));//    
		  }
		}
		private function testput():void{
			var key:String = "key2";
			var val:String = "value222";
			var ha:ByteArray=new ByteArray();
	    	ha.endian = Endian.BIG_ENDIAN;
	    	ha.writeByte(0xc8);
	    	ha.writeByte(0x10);
	    	ha.writeUnsignedInt(key.length);
			ha.writeUnsignedInt(val.length);
	    	ha.writeUTFBytes(key);
	    	ha.writeUTFBytes(val);
	    	socket.writeBytes(ha,0,ha.length);
	    	socket.flush();
		}
		private function testget():void{
			var key:String = "key2";
			var ha:ByteArray=new ByteArray();
	    	ha.endian = Endian.BIG_ENDIAN;
	    	ha.writeByte(0xc8);
	    	ha.writeByte(0x30);
	    	ha.writeUnsignedInt(key.length);
	    	ha.writeUTFBytes(key);
	    	socket.writeBytes(ha,0,ha.length);
	    	socket.flush();
		}
	}
}

좋은 웹페이지 즐겨찾기