处理由C#server中的Flex触发的http

Ily*_*man 6 c# apache-flex http

嗨,我正在尝试从Flex向C#服务器发送一条简单的HTTP消息,但似乎我正在接受两个电话,第一个是真正的,第二个是空的.

为什么这样,我该如何处理?

这是我的C#代码:

TcpListener listener = new TcpListener(IPAddress.Any, 9400);
listener.Start();
Console.WriteLine("Server started");
Socket client;
while (true)
{
    client = listener.AcceptSocket();
    // client.Available is an expensive call so it's just for testing
    Console.WriteLine("Client accepted " + client.Connected + " " + client.Available);
    SocketHandler handler = new SocketHandler();
    ThreadPool.QueueUserWorkItem(handler.handleSocket, client);
} 
Run Code Online (Sandbox Code Playgroud)

这是SocketHandler:

public void handleSocket(object socketObjeck)
{
    try
    {
        socket = (Socket)socketObjeck;
        byte[] buffer = new byte[1024];
        SocketSettings.setSocket(socket);
        //blocker...
        try
        {
            socket.Receive(buffer);
        }
        catch (Exception e)
        {
            Console.WriteLine("Error\nFaild reading from socket\n" + e.Message);
            socket.Close();
            return;
        }
        parseData(buffer);

        socket.Close(3);
    }
    catch (Exception e)
    {
        Console.WriteLine("Error\nError \n" + e.Message + "\n" + e.StackTrace);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的灵活代码:

var request:URLRequest = new URLRequest();
request.data = "Hello from flex";
request.url = URL;
request.method = URLRequestMethod.POST;
loader.load(request);
Run Code Online (Sandbox Code Playgroud)

我总是接到2个电话.这条线:

Console.WriteLine("Client accepted " + client.Connected + " " + client.Available);
Run Code Online (Sandbox Code Playgroud)

叫了两次.我错过了什么?

编辑1: 我可以肯定地告诉你,第二个调用是空的,它甚至没有在chrome JavaScript控制台中看到,它就像flex打开一个连接,等待一些响应或者我不知道是什么......但它发送没有数据.

编辑2:

我一直试图发送一个真正的HTTP响应通知另一件事,第二个调用即将到来而不等待第一次调用,如果我将响应线程置于短暂睡眠状态(在我的测试中100毫秒)然后我接到第二个调用在我能够回应第一个之前.

PS使用Flex 4.6,Visual Studio 2010

Ily*_*man 0

结果发现是跨域请求。如果你没有在 www 文件夹中添加跨域文件,flex 会向你发送一条空消息(如果你尝试使用跨域响应此消息,它会起作用)。