凯发ag旗舰厅登录网址下载
收集整理的这篇文章主要介绍了
java ,c# 解决安全沙箱问题
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
一朋友问java服务端如果解决这个问题,上次只是给出了解决这个问题的delphi代码。
flash客户端在网站上运行的时候,先进行socket连接,然后发“”信息,即安全策略请求,如果没有通过安全策略的检验,socket时连接不成功.
如果安全策略的检验通过了,socket也会先断开,然后在连接一次,这个时候一切正常了。
现在给出java和c#的代码
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(0, 2); 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); 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(0, 2); 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); 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(); 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; } } }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(); 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旗舰厅登录网址下载推荐给好友。