zoukankan      html  css  js  c++  java
  • 转载【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

  • 相关阅读:
    jackson 解析json含有不规则的属性的json字符串的方法
    swift入门-实现简单的登录界面
    github git.exe位置
    linux之SQL语句简明教程---IN
    怎么样才算是精通 C++?
    BZOJ2028: [SHOI2009]会场预约(set)
    BZOJ1058: [ZJOI2007]报表统计(set)
    洛谷P2391 白雪皑皑(并查集)
    BZOJ4514: [Sdoi2016]数字配对(费用流)
    BZOJ3143: [Hnoi2013]游走(期望DP 高斯消元)
  • 原文地址:https://www.cnblogs.com/chenhaib/p/2230954.html
Copyright © 2011-2022 走看看