我有一個.NET Windows服務,它產生一個線程,基本上只是作爲一個HttpListener
。這是工作在同步模式例如精...用C#處理多個請求HttpListener
private void CreateLListener()
{
HttpListenerContext context = null;
HttpListener listener = new HttpListener();
bool listen = true;
while(listen)
{
try
{
context = listener.GetContext();
}
catch (...)
{
listen = false;
}
// process request and make response
}
}
的問題我現在是我需要這與多個請求的工作,並讓他們回答同時或至少在重疊的方式。
爲了進一步解釋 - 客戶端是媒體播放器應用程序,它開始通過讓與請求頭屬性Range bytes=0-
媒體文件的請求。據我可以告訴它這是爲了弄清楚媒體容器是什麼。
它讀取了一個'chunk'(或者它已經讀取了足夠的確定媒體類型)之後,它會使用Range bytes=X-Y
發出另一個請求(來自不同的客戶端套接字號)。在這種情況下,Y是第一個響應中返回的Content-Length,X比使用IIS作爲測試發現的X小250000字節。在這個階段,它會得到最後的'大塊',看看它是否可以通過媒體時間戳來衡量長度。
讀過的是,它與Range bytes=0-
另一個請求(從另一個套接字號)開始正常的流媒體文件。
在任何時候,如果客戶端的用戶執行'跳過'操作,它會發送另一個請求(來自另一個套接字號)與Range bytes=Z-
,其中Z是在媒體文件中跳轉到的位置。
我對HTTP的東西不太好,但據我所知,我需要使用多個線程來處理每個請求/響應,同時允許原始HttpListener
返回到監聽。我已經做了大量的搜索,但找不到似乎適合的模型。
編輯:
確認和感謝里克施特拉爾以下例子我能適應適合我的需要...
Add a Web Server to your .NET 2.0 app with a few lines of code
完美的方式來做到這一點,但掌握異步編程將更好地服務於你 – 2012-01-27 15:32:04