解决flex的安全策略以后无法读取客户端的数据
糖牙 2009-10-10 10:57:39 TcpListener server = null;
private static String crossdomain = "<?xml version=\"1.0\"?><cross-domain-policy><site-control permitted-cross-domain-policies=\"all\"/><allow-access-from domain=\"*\" to-ports=\"*\"/></cross-domain-policy>\0";
private void socketstar()
{
#region 端口输入判断
string p = txtport.Text;
string addr = txtAddress.Text;
if (addr==null||addr==""||p == null ||p == "")
{
MessageBox.Show("IPAddress或port不能为空!");
return;
}
button2.Enabled = true;
button1.Enabled = false;
timer1.Enabled = true;//启动计时器
#endregion
try
{
#region 服务器socket启动
Int32 port = Convert.ToInt32(p);
IPAddress localAddr = IPAddress.Parse(addr);
server = new TcpListener(localAddr,port);
server.Start();
listBox1.Items.Add("等待连接...");
#endregion
Byte[] bytes = new Byte[1024];
String data = null;
while (true)
{
TcpClient client = server.AcceptTcpClient();
NetworkStream stream = client.GetStream();
//安全沙箱
byte[] cross = System.Text.Encoding.GetEncoding("gb2312").GetBytes(crossdomain);
stream.Write(cross, 0, cross.Length);
#region 读取客户端数据,然后返回读取的数据
int i;
while ((i = stream.Read(bytes, 0, bytes.Length)) != 0 ){ 异常:无法从传输连接中读取数据,您的主机中的软件放弃了一个已建立的连接
data = null;
data = System.Text.Encoding.GetEncoding("gb2312").GetString(bytes, 0, i);
listBox1.Items.Add("收" + data);
data = data.ToUpper();
byte[] msg = System.Text.Encoding.GetEncoding("gb2312").GetBytes("hello,send success:" + data);
stream.Write(msg, 0, msg.Length);
listBox1.Items.Add("发" + System.Text.Encoding.GetEncoding("gb2312").GetString(msg));
}
#endregion
client.Close();
}
}
catch (SocketException e)
{
listBox1.Items.Add("异常:" + e.Message);
}
finally
{
server.Stop();
}
}
我将项目发布到iis服务器上面,
解决安全沙箱的问题。。但得不到客户端输入的数据。