У меня проблема с расширением при попытке выполнить запрос HTTP GET из Google Chrome.C# TcpListener Проблема Chrome
У меня есть простой HTTPServer следующим образом:
public class HttpServer
{
#region Attributes ----------------------------------------------------
protected Int32 Port;
private TcpListener listener;
private Boolean closed;
#endregion
#region Properties (Own Members) --------------------------------------
internal String Folder { get; private set; }
#endregion
#region Constructors --------------------------------------------------
#endregion
#region Methods (Own Members) -----------------------------------------
public void Start(Int32 port, String folder)
{
if (!Directory.Exists(folder))
throw new ArgumentException("folder");
closed = false;
this.Folder = folder;
var ipLocal = IPAddress.Parse(NetUtils.GetLocalIPv4()); // My own stuff to get
this.Port = port;
listener = new TcpListener(ipLocal, Port);
listener.Start();
StartAccept();
}
public void Stop()
{
if (listener == null) return;
closed = true;
listener.Stop();
listener = null;
}
private void AcceptCallback(IAsyncResult ar)
{
if (closed) { return; }
StartAccept();
var client = listener.EndAcceptTcpClient(ar);
var processor = new HttpProcessor(client, this);
processor.Start();
}
private void StartAccept()
{
listener.BeginAcceptTcpClient(AcceptCallback, listener);
}
#endregion
}
HttpProcessor это класс, который управляет обменом данными между клиентом и сервером, и это не проблема.
Я настроить сервер в обычном режиме:
var httpServer = new HttpServer();
httpServer.Start(localPort, "somepath");
Здесь возникает проблема. Когда я пишу на Mozilla Firefox «http://localIpAddr:localPort/somepath/somefile», он входит в AcceptCallback один раз (как и ожидалось), но записывая тот же URL-адрес в результатах Google Chrome при вызове этого метода дважды.
Может кто-нибудь объяснить мне, в чем проблема здесь? Заранее спасибо.
Предлагаю вам посмотреть полученные запросы. Я предполагаю, что один будет для файла значка или чего-то подобного. –
Я запрашиваю аудиофайлы, например, «http: // ip: port/file.wav». На самом деле в Firefox я могу загрузить файл правильно, а в Chome первый вызов загружает файл, а второй ждет навсегда. не может понять, почему он называется дважды только в Chrome. – Alex
Одна из подключений, вероятно, может запрашивать 'favico.ico' в параллельном режиме. Посмотрите URL-адреса для входящих запросов. В любом случае, клиент HTTP может открывать столько соединений, сколько им нравится. – jgauffin