民浩

 

转载【p2p持续开发教程2】P2P应用之文本聊天


flash media server 4 安装:http://uh.9ria.com/link.php?url= ... d.php%3Ftid%3D99635


    flash cs5.5 &&fb4.5安装http://uh.9ria.com/link.php?url= ... .php%3Ftid%3D100325


    【p2p持续开发教程1】关于P2P应用中定向路径的解释http://uh.9ria.com/link.php?url= ... .php%3Ftid%3D100022


【p2p持续开发教程3】p2p应用开发之电子共享白板http://uh.9ria.com/link.php?url= ... d.php%3Ftid%3D85173



    先把代码放上吧。

  1. package  {
  2.     import flash.display.Sprite;
  3.     import flash.events.TextEvent;
  4.     import flash.events.MouseEvent;
  5.     import flash.events.NetStatusEvent;
  6.     import fl.events.ComponentEvent;
  7.     import flash.net.*;
  8.     public class main extends Sprite{
  9.         private var netConnection:NetConnection = null;
  10.         private var netGroup:NetGroup = null;
  11.         //如果你有装fms的话可以用下面的地址。。
  12.         //private const SERVER:String = "rtmfp://202.195.73.145/NetGroupPostExample";
  13.         //没装的话用这个开发key
  14.         private const StratusAddress:String = "rtmfp://stratus.adobe.com";
  15.         private const DeveloperKey:String = "1710124cbf69e3f25b780c13-d6cbf2cb35a1";
  16.         //如果你想要试下局域网的话。。也就不用fms服务器和adobe的开发key,可以这样netConnection.connect("rtmfp:");
  17.         public function main(){
  18.         //这是界面上的登录确定按钮
  19.              screen.login_btn.addEventListener(MouseEvent.CLICK,login_click);
  20.                      //聊天输入昵称文本框
  21.                          screen.name_txt=="请输入您的昵称";
  22.         }
  23.                
  24.                 private function login_click(e:MouseEvent):void{
  25.                                 screen.visible=false;
  26.                                 connect();
  27.                 }
  28.                
  29.                 private function connect():void{
  30.                         netConnection = new NetConnection();
  31.                         netConnection.addEventListener(NetStatusEvent.NET_STATUS, netConnectionHandler);
  32.                         netConnection.connect(StratusAddress + "/" + DeveloperKey);
  33.                        //发送消息可以是回车,或是点击发送按钮
  34.                         write_txt.addEventListener(ComponentEvent.ENTER, DoPost);
  35.                         enter_btn.addEventListener(MouseEvent.CLICK,enter_click);
  36.                 }
  37.                
  38.                 private function netConnectionHandler(e:NetStatusEvent):void{
  39.                         switch (e.info.code)
  40.                 {
  41.                         //链接成功后的初始化
  42.                     case "NetConnection.Connect.Success":
  43.                                            name_input.text=screen.name_txt.text;
  44.           
  45.                             //初始化登陆者
  46.                             onConnecter();
  47.                         break;
  48.                         
  49.                     case "NetConnection.Connect.Closed":
  50.                         break;
  51.                         
  52.                     case "NetStream.Connect.Success":
  53.                         break;
  54.                                        
  55.                     case "NetGroup.Posting.Notify": // e.info.message, e.info.messageID
  56.                     OnPosting(e.info.message);
  57.                                         trace(e.info.message.user);
  58.                     break;
  59.                                        
  60.                     case "NetConnection.Connect.Failed":
  61.                          trace("错误","错误")
  62.                         break;
  63.                         
  64.                     case "NetStream.Connect.Closed":
  65.                         break;
  66.                 }
  67.         
  68.                 }
  69.                 private function onConnecter():void{
  70.                         var groupSpecifier:GroupSpecifier;
  71.             groupSpecifier = new GroupSpecifier("aslrexample");
  72.             groupSpecifier.postingEnabled = true;
  73.             groupSpecifier.serverChannelEnabled = true;
  74.           //用一个群组,使效率更好点            
  75.             netGroup = new NetGroup(netConnection, groupSpecifier.groupspecWithAuthorizations());
  76.             netGroup.addEventListener(NetStatusEvent.NET_STATUS, netConnectionHandler);
  77.                         StatusMessage("【系统信息】" + screen.name_txt.text+ "@ 加入聊天室\n");
  78.                 }
  79.                
  80.                 private function DoPost(e:ComponentEvent):void{
  81.              mes();
  82.         }
  83.                
  84.                 private function enter_click(e:MouseEvent):void{
  85.                         mes();
  86.                 }
  87.                
  88.                 private function mes():void{
  89.                             var message:Object = new Object;
  90.                 message.text = write_txt.text;
  91.                 message.user=screen.name_txt.text;
  92.                                 message.destination = netGroup.convertPeerIDToGroupAddress(netConnection.nearID);
  93.                 netGroup.post(message);
  94.                                 //netGroup.sendToNearest(message.text, message.destination);
  95.                                 //netGroup.sendToNeighbor(message,"27249");
  96.                 StatusMessage("【我】 说: " + write_txt.text + "\n");
  97.                 write_txt.text="";
  98.                 }
  99.                
  100.                 private function OnPosting(message:Object):void{
  101.             StatusMessage("【群】" + message.user + "@对大家说: " + message.text + "\n");
  102.         }
  103.         private function StatusMessage(msg:Object):void{
  104.             chat_txt.text += msg;
  105.         }
  106.     }
  107. }
复制代码

我用的是cs5.5的版本。。可能有些朋友会打不开。。
如果你想要试下局域网的话。。也就不用fms服务器和adobe的开发key,可以这样netConnection.connect("rtmfp:");

gz.jpg (72.91 KB)

 

工作区界面

gz.jpg

gy.jpg (42.93 KB)

 

登录界面

gy.jpg

gg$D.jpg (42.36 KB)

 

进入聊天

gg$D.jpg

82U`8W~LU}ZIM8~V]{F$L`W.jpg (92.29 KB)

 

两个客户端交流

82U`8W~LU}ZIM8~V]{F$L`W.jpg

test.rar (841.65 KB)

 

原文地址:http://bbs.9ria.com/thread-100339-1-1.html

posted on 2011-11-01 08:44  民浩  阅读(638)  评论(0编辑  收藏  举报

导航