在本地执行ok,即双击打开html文件执行,但是上传到服务器,以http://abc.com/xxx这样访问执行,服务器只收到一个
<policy-file-request/>,然后3秒后断开,我无论怎么发送所谓的cross-domain-policy内容都无效,已经翻了所有的google和baidu,
并且在所有的目录,根目录都放了crossdomain.xml,并且也在论坛找了代码开了843端口,仍然问题同样。
已经两天了,真是没任何办法了,饭都没吃一口,我快昏了,想去死了
求求各位帮帮忙吧。我实在不行了。在服务器上运行的错误信息:
 开始:ServerSocket[addr=0.0.0.0/0.0.0.0,port=0,localport=6667]
 连接接受Socket[addr=/127.0.0.1,port=3299,localport=6667]
 << <policy-file-request/>
 安全戳已经发送!
 关闭....
 Exception in thread "main" java.lang.OutOfMemoryError: Java heap space我实在看不出是因为java内存溢出导致的问题还是<policy-file-request/>,请各位帮忙看看吧。
代码分三个文件,一个html一个java一个swfswf下载地址:
----------------------------------------------------------------------------------------------------------------------
http://dev.dschini.org/socketjs/socket.swf
html文件:
----------------------------------------------------------------------------------------------------------------------
<HEAD> 
<TITLE> SocketJS: Realtime Javascript Sockets </TITLE> 
<meta name="description" content="Sockets in Javascript"> 
<meta name="author" content="Manfred Weber"> 
<meta name="keywords" content="realtime,realtimejs,javascript,socket,flash,real,sockets,js,multiuser,dschini"> 
<style> 
.title { 
font-face:Verdana,Arial,sans-serif; 
font-size:24px; 
color:white; 

.standard { 
font-face:Verdana,Arial,sans-serif; 
font-size:16px; 
color:white; 

</style> 
</HEAD> 
<SCRIPT LANGUAGE=JavaScript> 
var nickname; 
function connect_user(){ 
window.document.socket.SetVariable("data", "NICK "+nickname); 
window.document.socket.TCallLabel("/", "send" ) 
document.getElementById("output").scrollTop = document.getElementById("output").scrollHeight; 

function SocketOnInit(){}; 
function SocketOnData(data){ 
document.getElementById("output").value = data; 

function SocketOnConnect(success){ 
if(success=="true"){ 
document.getElementById("output").value = "\n Connection established"; 
connect_user(); 
} else{ 
document.getElementById("output").value = "\n Connection failed"; 


function SocketOnClose(){ 
document.getElementById("output").value = "\n Connection closed"; 
} function SocketClose(){ 
window.document.socket.TCallLabel("/", "close" ); 
} function SocketConnect(host,port){ 
//alert("开始连接!");
nickname = document.getElementById("nickname").value; 
window.document.socket.SetVariable("host", host); 
window.document.socket.SetVariable("port", port); 
window.document.socket.TCallLabel("/", "connect" ); 
//alert("连接结束!");

function SocketSend(data){ 
window.document.socket.SetVariable("data", data); 
window.document.socket.TCallLabel("/", "send" );

</SCRIPT> 
<BODY bgcolor="#ffffff"> 
<p> <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" 
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0" 
width=1 height=1 id="socket"> 
<param name=movie value="socket.swf"> 
<param name=quality value=high> 
<embed src="socket.swf" quality=high width=1 height=1 type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" name="socket" swLiveConnect="true"> 
</embed> 
</object> </p> 
<form name="form1" action="#"> 
<table width="100%"> <tr> <td align="center"> 
<table style="border:1px solid black" cellpadding="15" width="500" bgcolor="#8e5275"> 
<tr> <td> 
<font face="Verdana,Arial" size="36px" color="white"> <b> SocketJS </b> </font> <br/> </td> 
</tr> 
<tr> <td> 
<table width="100%" bgcolor="#eeeeee" style="border:1px solid black"> 
<tr> 
<td width="75%"> 
<input type="text" style="width:100%" name="nickname" id="nickname" value="TestName" onClick="this.value='';"> </td> 
<td width="25%"> 
<input style="width:100%" type="button" value="Connect" onClick="SocketConnect('localhost',6667);"> </td> 
</tr> <tr> 
<td height="150" colspan="2"> 
<textarea style="width:100%;height:100%;background-color:#ddd" id="output" name="output">Enter Nickname and Connect!</textarea> </td> 
</tr> <tr> 
<td width="75%"> 
<input type="text" style="width:100%" name="input" id="input" value="Test Messages"> </td> 
<td width="25%"> 
<input type="button" style="width:100%" name="send" value="Send" onClick="SocketSend(document.getElementById('input').value);"> </td> 
</tr> 
</table> 
</td> </tr> 
</table> 
</td> </tr> </table> 
</form> 
</BODY> 
</HTML> 
java文件:
----------------------------------------------------------------------------------------------------------------------
import java.io.*;
import java.net.*;public class MyServer2 {
static String policyStr = "<cross-domain-policy><site-control permitted-cross-domain-policies=\"all\"/><allow-access-from domain=\"*\" to-ports=\"*\" /></cross-domain-policy>\0";
public static void main(String[] args) throws IOException {
ServerSocket s = new ServerSocket(6667);
System.out.println("开始:" + s);
try {
Socket socket=s.accept();
try {
System.out.println("连接接受" +  socket);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
while(true){
char b;
StringBuilder buffer = new StringBuilder();
while ((b = (char) in.read()) != -1) {
if (b == 0x0) {
break;
}
buffer.append(b);
}
String str = buffer.toString();
System.out.println("<< "+str);
if(str.equals("<policy-file-request/>")){ 
out.print(policyStr);
out.write(0x0);
out.println();
out.flush();
System.out.println("安全戳已经发送!");
}else{
out.print(str);
out.write(0x0);
out.println();
out.flush();
}
}
} finally {
System.out.println("关闭....");
socket.close();
}
} finally {
s.close();
}
}
}=====================================================
先运行MyServer2,然后将html文件和swf文件放在一个目录,直接双击打开html文件,是可以正常使用的,但通过http://abc.com/xxx这样的方式访问就发现问题了。请各位帮忙!打恩不言谢!

解决方案 »

  1.   

    先运行MyServer2,然后将html文件和swf文件放在一个目录,直接双击打开html文件,是可以正常使用的,但通过http://abc.com/xxx这样的方式访问就发现问题了。 
    通过http://abc.com/xxx这样的方式的时候路径方法名都对吗?
      

  2.   

    肯定是都对的,就是<policy-file-request/>和内存溢出的问题。
      

  3.   

    啥也不说了 http://blog.csdn.net/tiaotiaoyly/archive/2010/01/06/5142581.aspx