dis_oo

flash\flex\AS\Unity3d\JS\HTML5\CSS3\AJAX
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

socket通信(服务器)

Posted on 2011-08-16 14:46  FLASH春哥  阅读(398)  评论(0)    收藏  举报

<code>

<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx=" http://ns.adobe.com/mxml/2009"
					   xmlns:s="library://ns.adobe.com/flex/spark"
					   xmlns:mx="library://ns.adobe.com/flex/mx"
					   width="590" height="401">
	<fx:Declarations>
		<!-- 将非可视元素(例如服务、值对象)放在此处 -->
	</fx:Declarations>
	
	<fx:Script>
		
		<![CDATA[
			import flash.display.Sprite;
			import flash.events.Event;
			import flash.events.MouseEvent;
			import flash.events.ProgressEvent;
			import flash.events.ServerSocketConnectEvent;
			import flash.net.ServerSocket;
			import flash.net.Socket;
			import flash.utils.ByteArray;
			//import flash.net.ServerSocket
			
			private var serverSocket:ServerSocket = new ServerSocket();
			private var clientSocket:Socket=new Socket();
			
			private function bind():void
			{
				if( serverSocket.bound) 
				{
					serverSocket.close();
					serverSocket = new ServerSocket();
					
				}
				serverSocket.bind(8080,"192.168.0.1");
				//trace("Login......");
//				MessageArea.appendText( "Bound to: " + serverSocket.localAddress + ":" + serverSocket.localPort );
				serverSocket.addEventListener(ServerSocketConnectEvent.CONNECT,onCon);
				serverSocket.listen();
				
			}
			private function onCon(E:ServerSocketConnectEvent):void
			{   trace("connected");
				clientSocket=E.socket;
				clientSocket.addEventListener(ProgressEvent.SOCKET_DATA,onClientData);
				MessageArea.appendText( "Connection from " + clientSocket.remoteAddress + ":" + clientSocket.remotePort );
				SendBtn.addEventListener(MouseEvent.CLICK,send);
				
			}
			private function send(e:MouseEvent):void
			{
				try
				{
					if( clientSocket != null && clientSocket.connected )
					{
						clientSocket.writeUTF( MesInput.text );
						clientSocket.flush(); 
						MessageArea.appendText("FromSever:"+MesInput.text+"\n");
//						MessageArea.appendText( "Sent message to " + clientSocket.remoteAddress + ":" + clientSocket.remotePort );
					}
					else {
						
						MessageArea.appendText("No socket connection.");
					}
				}
				catch ( error:Error )
				{
					MessageArea.appendText( error.message );
				}
			}
			private function onClientData(e:ProgressEvent):void
			{
				
				MessageArea.appendText("FromClient:"+clientSocket.readUTF()+"\n");
			}
			
			
			
		]]>
	</fx:Script>
	<s:Panel x="14" y="10" width="563" height="364" title="LocalSever">
		<s:Label x="55" y="43" width="124" height="23" fontSize="18" fontWeight="bold"
				 text="PortNumber:"/>
		<s:Label x="67" y="77" width="107" height="23" fontSize="19" fontWeight="bold" text="IPNumber:"/>
		<s:TextInput id="PortInput" x="188" y="42" width="292"/>
		<s:TextInput id="IpInput" x="187" y="78" width="293" prompt="IpNumber"/>
		<s:Button id="SendBtn" x="379" y="289" label="SendMessage"/>
		<s:TextInput id="MesInput" x="67" y="288" width="293"/>
		<s:TextArea id="MessageArea" x="67" y="139" width="413" height="122"/>
		<s:Button id="LoginBtn" x="405" y="105" label="Login" click="bind()"/>
	</s:Panel>
	
</s:WindowedApplication>