Flex和java的socket通信三:多客户通信
来源:优易学  2011-2-20 9:49:25   【优易学:中国教育考试门户网】   资料下载   IT书店

 

  知识点:套接字管理器(Vector)会将于客户机连接的套接字添加到其列表中,在客户机断开连接后,在将相应的套接自从列表中删除,从中可以看出,客户机连接数与列表中添加套接字数目是一致的。
  Vector sManager=new Vector();
  sManager.add(socket); // 向列表添加套接字
  sManager.remove(socket); //从列表移除套接字
  sManager.size();//获取客户机连接数
  客户端代码:Client4.mxml
  ==================================================================================
  <?xml version="1.0" encoding="utf-8"?>
  <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" fontSize="12" creationComplete="initApp()" width="353" height="336">
  <mx:Script>
  <![CDATA[
  import flash.net.Socket;
  import flash.utils.ByteArray;
  import flash.events.ProgressEvent;
  private var socket:Socket=new Socket();
  private var intClient:int;//定义客户端数字出拳
  private var intServer:int; //定义服务端数字出拳
  private var intSY:int; //定义输赢判断
  private var strClient:String; //客户端文字出拳
  private var strServer:String; //服务端的文字出拳
  internal function initApp():void
  {
  socket.connect("127.0.0.1",8888);
  socket.addEventListener(Event.CONNECT,funConnect);
  socket.addEventListener(Event.CLOSE,funClose);
  socket.addEventListener(ProgressEvent.SOCKET_DATA,funSocket);
  }
  internal function funConnect(event:Event):void
  {
  myText.text+="连接已建立 n";
  }
  internal function funClose(event:Event):void
  {
  myText.text+="连接已关闭 n";
  }
  internal function sendMessage(msg:String):void
  {
  var message:ByteArray=new ByteArray();
  message.writeUTF(msg); //发送出拳数字
  socket.writeBytes(message);
  socket.flush();
  intClient=int(msg);
  switch(intClient)  //将数字转换成文字用于发布到屏幕上
  {
  case 0:
  strClient="剪刀";
  break;
  case 1:
  strClient="锤";
  break;
  case 2:
  strClient="包袱";
  break;
  }
  myText.text+="你出:"+strClient+"; ";
  myInput.text="";
  }
  internal function funSocket(event:ProgressEvent):void//接到服务器信息
  {
  var msg:String="";
  while(socket.bytesAvailable)
  {
  msg=socket.readUTF();
  intServer=int(msg);
  intSY=intClient-intServer;//通过数值判断输赢
  switch(intServer)  //将数字转换成文字用于发布到屏幕上
  {
  case 0:
  strServer="剪刀";
  break;
  case 1:
  strServer="锤";
  break;
  case 2:
  strServer="包袱";
  break;
  }
  myText.text+="服务器出:"+strServer+"; ";
  //判断输赢的算法
  if(intSY>0&&intSY<2)
  {
  myText.text+=" 结果:你赢了 n";
  }else if(intClient==intServer)
  {
  myText.text+=" 结果:平手 n";
  }else if(intSY<0&&intSY>-2)
  {
  myText.text+=" 结果:你输了 n";
  }else if(intSY>=2)
  {
  myText.text+=" 结果:你输了 n";
  }else if(intSY<=-2)
  {
  myText.text+=" 结果:你赢了 n";
  }
  myText.verticalScrollPosition = myText.maxVerticalScrollPosition;// myText滚动到最下面
  }
  }
  ]]>
  </mx:Script>
  <mx:TextArea x="10" y="32" width="331" height="263" id="myText"/>
  <mx:TextInput x="10" y="303" width="245" id="myInput"/>
  <mx:Button x="273" y="304" label="发送" id="myBtn" click="sendMessage(myInput.text)"/>
  <mx:Label x="10" y="10" text="规则:0代表剪刀;1代表锤;2代表包袱" width="331" fontWeight="bold"/>
  </mx:Application>
  这是我的学习笔记,简单的记叙了flex+java如何进行socket通信。希望对有需要的人有所帮助

上一页  [1] [2] 

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训