こんにちは、私はFlexからC#サーバに簡単なHTTPメッセージを送信しようとしていますが、私は牽引呼び出しを受けているようです。最初は本当のもの、もう1つは空です。C#サーバでFlexによって起動されたハンドルhttp
どうして私はそれをどう対応できますか?
これは私のC#のコードです:
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);
}
}
そして、これは私のフレックスコードです:
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のある
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);
2回と呼ばれます。 私は何が欠けていますか?
編集1: 私は2番目の呼び出しが空であることを確認するためにあなたを伝えることができ、それがさえクロムで見られていないのJavaScriptコンソール、それはフレックス接続を開き、いくつかの応答を待っているようなものだか私にはわかりません何が...しかしそれはデータを送信しません。
編集2:
私は短い睡眠に応答スレッドを入れていた場合、私は予告別のものを真のHTTP応答を送信しようとしては、2番目の呼び出しは、最初の呼び出しを待たずに来ている (私のテストでは100ミリ秒)、最初のコールに応答する前に2回目のコールを受けています。
P.S のFlex 4.6、@Spenderが述べたようにVisual Studioの2010
実際に何が要求されているのかでクライアント側を見てみませんか? Firebug、FiddlerまたはCharlesはすべてこれを行うことができます。 – spender