Привет, я пытаюсь отправить простое HTTP-сообщение с Flex на сервер C #, но мне кажется, что я получаю буксирные вызовы, первый настоящий, а второй - пустой.
Почему это так и как я могу с этим справиться?
Это мой код на 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, это похоже на гибкое открытие соединения и ожидание ответа, или я не знаю что ... но он не отправляет никаких данных.
Редактировать 2:
Я пытался отправить настоящий HTTP-ответ, уведомляя о другом, второй вызов приходит, не дожидаясь первого вызова, если я переводю поток ответа в кратковременный сон (100 миллисекунд в моем test), то я получаю второй звонок до того, как смогу ответить на первый.
P.S Использование Flex 4.6, Visual Studio 2010