gpt4 book ai didi

c# - 在 C# 服务器中处理由 Flex 触发的 http

转载 作者:太空狗 更新时间:2023-10-29 21:46:28 24 4
gpt4 key购买 nike

您好,我正在尝试从 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);
}

这是 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);
}
}

这是我的弹性代码:

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

我总是接到 2 个电话。线路:

Console.WriteLine("Client accepted " + client.Connected + " " + client.Available);

调用了两次。我错过了什么?

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

编辑 2:

我一直在尝试发送一个真正的 HTTP 响应通知另一件事,第二个调用是在不等待第一个调用的情况下进行的,如果我将响应线程置于短暂的 sleep 状态(在我的测试中为 100 毫秒)那么我得到在我能够响应第一个之前的第二个电话。

附言使用 Flex 4.6、Visual Studio 2010

最佳答案

正如@Spender 提到的,如果不知道调用是什么,就很难知道调用的原因是什么。

但是,鉴于您正在使用 URLRequest 进行通信,第一个调用可能是对 crossdomain.xml 文件的请求,该文件必须存在以便 Flash 播放器与您的服务器通信。

其他协议(protocol)有不同的初始化调用(例如,RemoteObjectNetConnection 将发送一个初始调用来设置本地 FlexClientId,以及一个 SocketServer 将在特定端口上调用 crossdomain.xml。)

故事的寓意:您需要在响应之前检查请求的内容。

关于c# - 在 C# 服务器中处理由 Flex 触发的 http,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8965019/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com