2010-06-30 72 views
0

繼這個問題:Connect to Windows app with WebRequest ,我決定實現一個簡單的Web服務器類型的事情對我的客戶端應用程序接收的WebRequest的。Web服務器沒有返回響應的WebRequest

基本上在客戶端應用程序中,我有一個偵聽套接字,當它接收到連接時,它會對數據執行一些操作,然後返回結果。 接收數據實際上有效,但是一旦我處理完了,我需要將結果發送回發送網絡請求的電話。

我試着用下面的代碼,雖然它確實返回數據(例如,如果我得到的地址在Firefox中顯示成功消息),它永遠不會回到手機。我不知道它出錯的地方。

if (mySocket.Connected) 
{ 
    if ((numBytes = mySocket.Send(bSendData, bSendData.Length, 0)) == -1) 
     listBox1.Items.Add("Socket Error cannot Send Packet"); 
} 

和mySocket是我收到連接的原始套接字。

是否有我需要返回結果的具體方法?甚至在手機上的回撥甚至不會發射。但我認爲我正確地發回數據,因爲網頁瀏覽器確實得到了迴應。

謝謝!

回答

0

您需要在響應中指定內容長度,或者在發送完畢後關閉連接。否則,電話將不知道響應已完成。

這可能不是問題,但它似乎是一個很可能的候選人。

+0

對不起,我沒有發佈完整的代碼。在此代碼之前,我這樣做: sBuffer = sBuffer +「HTTP/1.1 200 OK」; sBuffer = sBuffer +「Content-Type:text/xml; charset = utf-8」; ; sBuffer = sBuffer +「Content-Length:1」; 併發送該sBuffer。 此後,我關閉了套接字。 當我在線測試相同的移動應用程序時,它確實工作,所以它一定是我的Windows「服務器」程序做錯了。 p.s.所有的防火牆等關閉 – Matt 2010-06-30 08:52:10

+0

請注意,HTTP頭被換行符分隔,你似乎沒有這樣做 – 2010-08-08 13:30:49