日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > C# >内容正文

C#

java ,c# 解决安全沙箱问题

發(fā)布時(shí)間:2024/9/30 C# 83 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java ,c# 解决安全沙箱问题 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?一朋友問(wèn)java服務(wù)端如果解決這個(gè)問(wèn)題,上次只是給出了解決這個(gè)問(wèn)題的Delphi代碼。

?

flash客戶端在網(wǎng)站上運(yùn)行的時(shí)候,先進(jìn)行Socket連接,然后發(fā)“<policy-file-request/>”信息,即安全策略請(qǐng)求,如果沒(méi)有通過(guò)安全策略的檢驗(yàn),socket時(shí)連接不成功.
如果安全策略的檢驗(yàn)通過(guò)了,socket也會(huì)先斷開(kāi),然后在連接一次,這個(gè)時(shí)候一切正常了。

?

現(xiàn)在給出java和C#的代碼

  • /*
  • ?*?自定義的協(xié)議 
  • ?*?收到消息:?11開(kāi)頭表示新加入了聊天用戶;22開(kāi)頭表示公聊;33開(kāi)頭表示私聊
  • ?*?發(fā)送消息:11開(kāi)頭表示更新用戶列表;22開(kāi)頭表示發(fā)送到屏幕上;44發(fā)送在線人數(shù)
  • ?*?
  • ?*/
  • 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<Socket,String>?clientList?=?new?HashMap<Socket,String>();
  • ????public?JavaServer(){}
  • ????void?startServer()
  • ????{
  • ???????????????String?xml?=?"<cross-domain-policy>";
  • ????????????????xml?=?xml?+?"<site-control?permitted-cross-domain-policies=/"all/"/>";
  • ????????????????xml?=?xml?+?"<allow-access-from?domain=/"*/"?to-ports=/"8014/"?/>";
  • ????????????????xml?=?xml?+?"</cross-domain-policy>";???
  • ????????????try?{
  • ????????????????server=new?ServerSocket(PORT);
  • ????????????????System.out.println("服務(wù)器偵聽(tīng):"+PORT);
  • ????????????????while(true)
  • ????????????????{
  • ????????????????????????try
  • ????????????????????????{
  • ????????????????????????????????//新建一個(gè)連接
  • ????????????????????????????????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("<policy-file-request/>"))//判斷是不是安全策略請(qǐng)求
  • ????????????????????????????????{
  • ????????????????????????????????????????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(0,?2);//截取第一個(gè)字符
  • ????????????????????????????????????????int?a=Integer.parseInt(cmd);
  • ????????????????????????????????????????if?(a==11)
  • ????????????????????????????????????????{
  • ????????????????????????????????????????String?strName=head.substring(2).trim();
  • ????????????????????????????????????????System.out.println(strName+"登陸了");
  • ????????????????????????????????????????bMan.sendToAll("22"+strName+"登陸了");//廣播誰(shuí)登陸了
  • ????????????????????????????????????????clientList.put(socket,strName);//加入到HashMap中
  • ????????????????????????????????????????funList(clientList);
  • ????????????????????????????????????????}???????????????????????????????
  • ???????????????????????????????????????
  • ????????????????????????????????}
  • ????????????????????????}
  • ????????????????????????catch?(Exception?e)
  • ????????????????????????{
  • ????????????????????????????????System.out.println("服務(wù)器出現(xiàn)異常!"?+?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(0,?2);//截取第一個(gè)字符
  • ????????????????????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+"登陸了");//廣播誰(shuí)登陸了
  • ????????????????????????????clientList.put(this.socket,strName);//加入到HashMap中
  • ????????????????????????????funList(clientList);
  • ????????????????????????????break;
  • ????????????????????????case?22:
  • ????????????????????????????System.out.println("公聊");
  • ????????????????????????????msg=arrMsg[0]+arrMsg[1]+"說(shuō):"+arrMsg[2];
  • ????????????????????????????bMan.sendToAll(msg);
  • ????????????????????????????break;
  • ????????????????????????case?33:
  • ????????????????????????????if(arrMsg[1].equals("所有人"))
  • ????????????????????????????{
  • ????????????????????????????????msg=arrMsg[2]+"說(shuō):"+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]))//發(fā)給對(duì)方
  • ????????????????????????????????????{
  • ????????????????????????????????????????socketOne=(Socket)ok;
  • ????????????????????????????????????????bMan.sendToONE(socketOne,"22(悄悄話)"+arrMsg[2]+"對(duì)你說(shuō):"+arrMsg[3]);
  • ????????????????????????????????????}else?if(ov.equals(arrMsg[2]))//發(fā)給自己
  • ????????????????????????????????????{
  • ????????????????????????????????????????socketOne=(Socket)ok;
  • ????????????????????????????????????????bMan.sendToONE(socketOne,"22(悄悄話)你對(duì)"+arrMsg[1]+"說(shuō):"+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)+"離開(kāi)了...");
  • ????????????????????????clientList.remove(socket);
  • ????????????????????????funList(clientList);
  • ????????????????????????
  • ????????????????????}
  • ????????????????????reader=null;
  • ????????????????????writer=null;
  • ????????????????????socket=null;
  • ????????????????????System.out.println("客戶機(jī)離開(kāi)");
  • ????????????????????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())?{//把用戶名稱發(fā)給在線所有客戶端??
  • ????????????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<size();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<size();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當(dāng)前聊天人數(shù):"+size();
  • ????????System.out.println(info);
  • ????????sendToAll(info);
  • ????}
  • }
  • ?C#代碼,Delphi代碼

    請(qǐng)到http://download.csdn.net/wind520下載

    ?

    總結(jié)

    以上是生活随笔為你收集整理的java ,c# 解决安全沙箱问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。