using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using DevSDK.Net.Sockets;
using System.IO;namespace ConsoleApplication1
{
class Program
{
static HttpListener sSocket = null;
static void Main(string[] args)
{
sSocket = new HttpListener(); sSocket.Prefixes.Add("http://127.0.0.1:8080/"); sSocket.Start(); sSocket.BeginGetContext(new AsyncCallback(GetContextCallBack), sSocket); Console.Read();
} static void GetContextCallBack(IAsyncResult ar)
{
try
{
sSocket = ar.AsyncState as HttpListener; HttpListenerContext context = sSocket.EndGetContext(ar); Console.WriteLine(context.Request.Url.PathAndQuery); // 这里我要进行数据库查询。。新来的连接它怎么处理的? }
catch { }
sSocket.BeginGetContext(new AsyncCallback(GetContextCallBack), sSocket);
}
}
}
请问。这个异步HTTPLISTENER实现代码假如进行数据库查询的那个地方。需要很长很长时间。那么,新进来的连接请求是被怎么处理的呢?是进行排队?还是异步本身就是一个多线程呢?如果是排队。请问怎么解决并发的问题?
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using DevSDK.Net.Sockets;
using System.IO;namespace ConsoleApplication1
{
class Program
{
static HttpListener sSocket = null;
static void Main(string[] args)
{
sSocket = new HttpListener(); sSocket.Prefixes.Add("http://127.0.0.1:8080/"); sSocket.Start(); sSocket.BeginGetContext(new AsyncCallback(GetContextCallBack), sSocket); Console.Read();
} static void GetContextCallBack(IAsyncResult ar)
{
try
{
sSocket = ar.AsyncState as HttpListener; HttpListenerContext context = sSocket.EndGetContext(ar); Console.WriteLine(context.Request.Url.PathAndQuery); // 这里我要进行数据库查询。。新来的连接它怎么处理的? }
catch { }
sSocket.BeginGetContext(new AsyncCallback(GetContextCallBack), sSocket);
}
}
}
请问。这个异步HTTPLISTENER实现代码假如进行数据库查询的那个地方。需要很长很长时间。那么,新进来的连接请求是被怎么处理的呢?是进行排队?还是异步本身就是一个多线程呢?如果是排队。请问怎么解决并发的问题?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货