欢迎访问 生活随笔!

凯发ag旗舰厅登录网址下载

当前位置: 凯发ag旗舰厅登录网址下载 > 编程语言 > c# >内容正文

c#

java ,c# 解决安全沙箱问题 -凯发ag旗舰厅登录网址下载

发布时间:2024/9/30 c# 39 豆豆
凯发ag旗舰厅登录网址下载 收集整理的这篇文章主要介绍了 java ,c# 解决安全沙箱问题 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

 一朋友问java服务端如果解决这个问题,上次只是给出了解决这个问题的delphi代码。

 

flash客户端在网站上运行的时候,先进行socket连接,然后发“”信息,即安全策略请求,如果没有通过安全策略的检验,socket时连接不成功.
如果安全策略的检验通过了,socket也会先断开,然后在连接一次,这个时候一切正常了。

 

现在给出java和c#的代码

  • /*
  •  * 自定义的协议 
  •  * 收到消息: 11开头表示新加入了聊天用户;22开头表示公聊;33开头表示私聊
  •  * 发送消息:11开头表示更新用户列表;22开头表示发送到屏幕上;44发送在线人数
  •  * 
  •  */
  • import java.net.*;
  • import java.io.*;
  • import java.util.*;
  • public class javaserver {
  •     private static final int port = 8014;
  •     private serversocket server;
  •     private bmanager bman=new bmanager();
  •     map clientlist = new hashmap();
  •     public javaserver(){}
  •     void startserver()
  •     {
  •                string xml = "";
  •                 xml = xml   "";
  •                 xml = xml   "";
  •                 xml = xml   "";   
  •             try {
  •                 server=new serversocket(port);
  •                 system.out.println("服务器侦听:" port);
  •                 while(true)
  •                 {
  •                         try
  •                         {
  •                                 //新建一个连接
  •                                 socket socket = server.accept();
  •                                 system.out.println("连接成功......");
  •                                 bufferedreader br = new bufferedreader(new inputstreamreader(socket.getinputstream(),"utf8"));
  •                                 printwriter pw = new printwriter(socket.getoutputstream());
  •                                 //接收用户名
  •                                 char[] by = new char[22];
  •                                 br.read(by,0,22);
  •                                 string head = new string(by);
  •                                 system.out.println("消息头:"   head   ":");
  •                                 if(head.equals(""))//判断是不是安全策略请求
  •                                 {
  •                                         pw.print(xml   "/0");
  •                                         pw.flush();
  •                                         system.out.println("策略:"   xml   "/0");
  •                                 }
  •                                 else
  •                                 {
  •                                         
  •                                         
  •                                         chat_thread thread = new chat_thread(socket);
  •                                         thread.start();
  •                                         bman.add(socket);
  •                                         bman.sendclientinfo();
  •                                         string cmd=head.substring(02);//截取第一个字符
  •                                         int a=integer.parseint(cmd);
  •                                         if (a==11)
  •                                         {
  •                                         string strname=head.substring(2).trim();
  •                                         system.out.println(strname "登陆了");
  •                                         bman.sendtoall("22" strname "登陆了");//广播谁登陆了
  •                                         clientlist.put(socket,strname);//加入到hashmap中
  •                                         funlist(clientlist);
  •                                         }                               
  •                                        
  •                                 }
  •                         }
  •                         catch (exception e)
  •                         {
  •                                 system.out.println("服务器出现异常!"   e );
  •                         }
  •                 }
  •          }catch(exception e){
  •             system.out.println(e);
  •         } 
  •     }
  •     
  •     public static void main(string[] args) {
  •         javaserver server=new javaserver();
  •         server.startserver();
  •     }
  •     class chat_thread extends thread
  •     {
  •         socket socket;
  •         private bufferedreader reader;
  •         private printwriter writer;
  •         chat_thread(socket socket)
  •         {
  •             this.socket=socket;
  •         }
  •         public void run()
  •         {
  •             
  •             try
  •             {
  •                 reader=new bufferedreader(new inputstreamreader(socket.getinputstream(),"utf8"));
  •                 writer=new printwriter(socket.getoutputstream(),true);
  •                 string msg;
  •                 while((msg=reader.readline())!=null)
  •                 {
  •                     system.out.println("get:" msg);
  •                     string str=msg.substring(02);//截取第一个字符
  •                     int a=integer.parseint(str);
  •                     string[] arrmsg=msg.split("--");
  •                     switch(a)
  •                     {
  •                         case 11 :
  •                             string strname=msg.substring(2);
  •                             system.out.println(strname "登陆了");
  •                             bman.sendtoall("22" strname "登陆了");//广播谁登陆了
  •                             clientlist.put(this.socket,strname);//加入到hashmap中
  •                             funlist(clientlist);
  •                             break;
  •                         case 22:
  •                             system.out.println("公聊");
  •                             msg=arrmsg[0] arrmsg[1] "说:" arrmsg[2];
  •                             bman.sendtoall(msg);
  •                             break;
  •                         case 33:
  •                             if(arrmsg[1].equals("所有人"))
  •                             {
  •                                 msg=arrmsg[2] "说:" arrmsg[3];
  •                                 bman.sendtoall("22" msg);
  •                             }else
  •                             {
  •                                 socket socketone=new socket();
  •                                 system.out.println("私聊");
  •                                 set set = clientlist.keyset();//使用keyset方法获取所有key值
  •                                 iterator it = set.iterator();
  •                                 while (it.hasnext()) {  
  •                                     object ok=it.next();
  •                                     object ov=clientlist.get(ok);
  •                                     if(ov.equals(arrmsg[1]))//发给对方
  •                                     {
  •                                         socketone=(socket)ok;
  •                                         bman.sendtoone(socketone,"22(悄悄话)" arrmsg[2] "对你说:" arrmsg[3]);
  •                                     }else if(ov.equals(arrmsg[2]))//发给自己
  •                                     {
  •                                         socketone=(socket)ok;
  •                                         bman.sendtoone(socketone,"22(悄悄话)你对" arrmsg[1] "说:" arrmsg[3]);
  •                                     }
  •                                 }
  •                             }
  •                             
  •                             break;
  •                     }
  •                     //bman.sendtoall(msg);
  •                 }
  •             }catch(exception e)
  •             {
  •                 
  •             }finally
  •             {
  •                 try {
  •                     bman.remove(socket);
  •                     if(reader !=null) reader.close();
  •                     if(writer !=null) writer.close();
  •                     if(socket !=null) socket.close();
  •                     if(clientlist.containskey(socket))
  •                     {
  •                         bman.sendtoall("22" clientlist.get(socket) "离开了...");
  •                         clientlist.remove(socket);
  •                         funlist(clientlist);
  •                         
  •                     }
  •                     reader=null;
  •                     writer=null;
  •                     socket=null;
  •                     system.out.println("客户机离开");
  •                     bman.sendclientinfo();
  •                 } catch (exception e) {}
  •             }
  •             
  •         }
  •     }
  •     void funlist(map clientlist) // 广播在线列表
  •     {
  •         string strlist="";//在线列表
  •         set set = clientlist.keyset();//使用keyset方法获取所有key值
  •         system.out.println(set);
  •         iterator it = set.iterator();
  •         system.out.println(it);
  •         while (it.hasnext()) {//把用户名称发给在线所有客户端  
  •             strlist ="--";
  •             strlist =clientlist.get(it.next());
  •         }
  •         bman.sendtoall("11" strlist);
  •     }
  • }
  • class bmanager extends vector
  • {
  •     bmanager (){}
  •     void add(socket sock)
  •     {
  •         super.add(sock);
  •     }
  •     void remove(socket sock)
  •     {
  •         super.remove(sock);
  •     }
  •     synchronized void sendtoall(string msg)
  •     {
  •         printwriter writer=null;
  •         socket sock;
  •         for(int i=0;i
  •         {
  •             sock=(socket)elementat(i);
  •             try
  •             {
  •                 writer=new printwriter(sock.getoutputstream(),true);
  •             }catch(exception ie){}
  •             if(writer!=null)writer.println(msg);
  •         }
  •     }
  •     synchronized void sendtoone(socket socket,string msg)
  •     {
  •         printwriter writer=null;
  •         socket sock;
  •         for(int i=0;i
  •         {
  •             sock=(socket)elementat(i);
  •             if(socket==sock)
  •             {
  •                 
  •                 try
  •                 {
  •                     writer=new printwriter(sock.getoutputstream(),true);
  •                 }catch(exception ie){}
  •                 if(writer!=null)writer.println(msg);
  •             }
  •         }
  •         
  •     }
  •     synchronized void sendclientinfo()
  •     {
  •         string info="44当前聊天人数:" size();
  •         system.out.println(info);
  •         sendtoall(info);
  •     }
  • }
  •  c#代码,delphi代码

    请到http://download.csdn.net/wind520下载

     

    总结

    以上是凯发ag旗舰厅登录网址下载为你收集整理的java ,c# 解决安全沙箱问题的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得凯发ag旗舰厅登录网址下载网站内容还不错,欢迎将凯发ag旗舰厅登录网址下载推荐给好友。

    • 上一篇:
    • 下一篇:
    网站地图