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