2012-03-15 44 views
-1

私は、特定のポートでブラウザからの要求を聞くサーバを作成しています(例えば、http://23.10.222.151:20000/mac=0080440EEE71)。私はブラウザのソケットを取得して、この場合はmac=2280440FFF23という要求を確認します。そのデバイスが接続されている場合、私は見て、私が言うのページに表示したくない場合は、「デバイスを:{0}は、サーバーに登録されていません...しばらくお待ちください!」C#ソケットに書き込む

TcpClient client = listener.AcceptTcpClient(); 
Console.WriteLine("Connection Accepted from " + client.Client.RemoteEndPoint); 

NetworkStream ClientStream = client.GetStream(); 

if(!devDictionary.isDevicePresent(mac))  
{ 
    Thread onRequestThread = new Thread(new ParameterizedThreadStart(OnRequesstHandler)); 
    onRequestThread.Start(new OnRequestHandlerObject(mac, ClientStream)); 

    String notfound = String.Format("<html><body><h1>Device: {0} has NOT registered with the Server! Please wait...</h1></body></html>", mac); 
    byte[] response = encoder.GetBytes(notfound); 
    ClientStream.Write(response, 0, response.Length); 
} 

スレッドがかどうかをチェックし続けますデバイスが接続されています。 yesの場合は、同じClientStreamを使用して表示されます。しかし、そのページはすぐには表示されません。それはループを維持し、デバイスが接続するとすぐに両方のページが連続して表示されます。最初のページをすぐに表示する方法は?

+0

'ClientStream.Flush();'を試しましたか? –

+0

はい、私はしました。仕事をしなかった... – batrulz

答えて

0

HTTPは、関連プロトコルです。 HTMLコンテンツをクライアントに送信するだけでなく、まずメッセージヘッダーを送信する必要があります。

裸のソケットではなく既製のものから始めます。例えば、hereのように見てください。

関連する問題