XMLSocket 服务器端怎么弄

cyfnh 2012-09-18 04:05:08
本人想做一个Web的即时通讯功能,用Flash的XMLSocket,但对这方面没有概念,在网上找了很多资料和实例学习,但是联接就是搞不成功。也拿Adobe官方的的实例去测试,还是搞不成,提示“securityErrorEvent type="securityError" bubbles=false cancelable=false eventPhase=2 text="Error #2048"” 错误 。应该是安全沙箱的问题。

在网上找到下面一段代码,但是不知道C#的代码要放在哪里,何时调用。跪求高手解答,最好说得详细、具体一点,因为本人很菜,对这个没一点概念。(找到的代码复制如下:)



using System;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;

namespace XMLsocket
{
class Program
{

static void Main(string[] args)
{
TcpListener server = null;
try
{
// Set the TcpListener on port 13000.
Int32 port = 13500;
IPAddress localAddr = IPAddress.Parse("127.0.0.1");

// TcpListener server = new TcpListener(port);
server = new TcpListener(localAddr, port);
// Start listening for client requests.
server.Start();


// byte[] msg = System.Text.Encoding.Default.GetBytes("Game over!!!\0");
/// stream.Write(msg, 0, msg.Length);
// Enter the listening loop.
while (true)
{
Console.Write("Waiting for a connection... ");
TcpClient client = server.AcceptTcpClient();
// Perform a blocking call to accept requests.
// You could also user server.AcceptSocket() here.

Console.WriteLine("Connected!");


NetworkStream stream = client.GetStream();
// Get a stream object for reading and writing
stream = client.GetStream();
// Set the TcpListener on port 13000.
// Buffer for reading data
int i;
Byte[] bytes = new Byte[256];
String data = null;
while ((i = stream.Read(bytes, 0, bytes.Length)) != 0)
{
//Console.WriteLine("*******"+i);
// Translate data bytes to a ASCII string.
data = System.Text.Encoding.Default.GetString(bytes, 0, i);


Console.WriteLine("Received: {0}", data);
// Process the data sent by the client.
data = data.ToUpper();

if (data == "<POLICY-FILE-REQUEST/>\0")
{
string mdata = "";
System.IO.StreamReader sr = new StreamReader("crossdomain.xml");
mdata = sr.ReadToEnd();
sr.Close();
mdata = mdata + "\0";

//string mdata = "<cross-domain-policy> <allow-access-from domain=\"*\" to-ports=\"*\"/></cross-domain-policy>\0";
byte[] msg2 = System.Text.Encoding.Default.GetBytes(mdata);
/// Send back a response.
stream.Write(msg2, 0, msg2.Length);
stream.Flush();
}

/////////////////////////////////////////////return back

if (data == "<LOGIN PASSWORD=\"XXXX\" USERNAME=\"XXXX\" />\0".ToUpper())
{
for (int ii = 0; ii < 10000; ii++)
{

data = "<MESSAGE USER=\"John\" TEXT=\"Hello, my name is John!" + System.DateTime.Now.Millisecond.ToString() + "\" />\0";
byte[] msg = System.Text.Encoding.Default.GetBytes(data);
/// Send back a response.

stream.Write(msg, 0, msg.Length);
stream.Flush();
Console.WriteLine("Sent: {0}", data);
System.Threading.Thread.Sleep(100);
}
}
}
// Shutdown and end connection
// client.Close();
}
}
catch (Exception e)
{

Console.WriteLine("SocketException: {0}", e);
}
finally
{
// Stop listening for new clients.
server.Stop();
}

Console.WriteLine("\nHit enter to continue...");
Console.Read();
}
}
}






AS:

//System.security.allowDomain("127.0.0.1");
//System.security.loadPolicyFile("http://127.0.0.1:8081/ss.xml");
//System.security.loadPolicyFile("http://127.0.0.1:8081/crossdomain.xml");

//System.security.loadPolicyFile('xmlsocket://127.0.0.1:8081');

this.createTextField("my_txt", 10, 0, 0, 300, 200);
my_txt.border = true;
my_txt.text = "Hello world";
my_txt._x = (Stage.width - my_txt._width) / 2;
my_txt._y = (Stage.height - my_txt._height) / 2;
//SOCKET服务是否已关闭

var IsScoketClose:Boolean = true;

//////////////////////////////////////////
var mySocketa = new XMLSocket();
mySocketa.addEventListener( IOErrorEvent.IO_ERROR , failConnect );
mySocketa.connect("127.0.0.1", 13500);
btn_send.onRelease = function() {
mySocketa.send(my_txt.text);
trace("send");
my_txt.text ="发送13500成功!";
};
mySocketa. = function()
{
my_txt.text =e.text;

mySocketa.close();
}

mySocketa.onConnect = function(myStatus) {
trace(myStatus);
if (myStatus) {

var my_xml:XML = new XML();
var myLogin:XMLNode = my_xml.createElement("login");
myLogin.attributes.username ="XXXX";
myLogin.attributes.password = "XXXX";
my_xml.appendChild(myLogin);
mySocketa.send(my_xml);


trace("连接13500成功!");
// mySocketa.send("Iloveyou!\n");
trace("发送13500成功!");
my_txt.text ="发送13500成功!";
} else {
trace("连接13500失败!");
my_txt.text ="连接13500失败!";
}
};
/*
mySocketa.onData = function(msg:String) {
//trace(msg);
//txtInput.text=msg;
my_txt.text =msg;
//mySocketa.send(msg);
//txtInput.text = msg;
};
*/
mySocketa.onXML = function (doc) {
var e = doc.firstChild;

if (e != null && e.nodeName == "MESSAGE") {

my_txt.text =e.attributes.USER+"/"+e.attributes.TEXT;
//displayMessage(e.attributes.user, e.attributes.text);
}
}

mySocketa.onClose = function () {
// trace("Connection to server lost.");
my_txt.text ="Connection to server lost.";
}




...全文
1657 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
孟子E章 2012-09-27
  • 打赏
  • 举报
回复
自己的服务器没有必要使用这个 吧

另外,注意防火墙是否限制了端口

利用C#建立XMLSocket服务器
http://hi.baidu.com/vim888/item/ab8c93cb675b0a0dac092f54
http://hi.baidu.com/vim888/item/8367430f7d779525a1312d54
http://hi.baidu.com/vim888/item/805549f9808396683d148555
cyfnh 2012-09-26
  • 打赏
  • 举报
回复
没人回答,要结贴给分了,谁要分的过来
cyfnh 2012-09-19
  • 打赏
  • 举报
回复
怎么这么长时间没有一个人回,自顶

61,655

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧