Я тип M-x delete-region
довольно часто, но можно связать его он с ключом.
С Удаляют Режим выбора в более новых версиях Emacs, Вы не должны вводить команду, только начните вводить:
По умолчанию, вставка текста обычно происходит, даже если метка является active—, например, вводя вставки символ вЂa’, то деактивирует метку. Удалите Режим выбора, незначительный режим, изменяет это поведение: если Вы включаете тот режим, то вставка пишет сообщение, в то время как метка является активными причинами текст в регионе, который будет удален сначала. Кроме того, управляет, чтобы обычно удалили всего один символ, такой как C-d или DEL , удалит весь регион вместо этого. Для переключения Удаляют Режим выбора на или прочь, тип
M-x delete-selection-mode.
Попробуйте использовать System.Net.WebClient напрямую вместо System.Net.Sockets.TcpClient:
using System;
using System.Net;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
WebClient wc = new WebClient();
Console.WriteLine("[requesting...]");
Console.WriteLine(wc.DownloadString("http://www.google.com"));
Console.WriteLine("[done!]");
Console.ReadKey();
}
}
}
Во всем этом я нашел один вопрос:
Как я могу прочитать ответ и быть уверенным, что прочитал весь ответ в HTTP/1.1 запросе?
И это вопрос, на который я могу ответить!
Все методы, которые вы здесь используете, являются синхронными, что просто в использовании, но не является даже немного надежным. Вы увидите проблемы, как только у вас будет большой ответ, а вы получите только его часть.
Чтобы реализовать соединение TcpClient наиболее надежно, вы должны использовать все асинхронные методы и обратные вызовы. Соответствующие методы следующие:
1) Создайте соединение с помощью TcpClient.BeginConnect(...) с обратным вызовом TcpClient.EndConnect(...)
.
2) Отправьте запрос с помощью TcpClient.GetStream().BeginWrite(...) с обратным вызовом TcpClient.GetStream().EndWrite(...)
3) Получение ответа с помощью TcpClient.GetStream().BeginRead(...) с обратным вызовом TcpClient.GetStream().EndRead(...), добавление результата в буфер StringBuilder, а затем повторный вызов TcpClient.GetStream().BeginRead(...) (с тем же обратным вызовом) до получения ответа размером 0 байт.
Именно этот последний шаг (многократный вызов BeginRead до тех пор, пока не будет прочитано 0 байт) решает проблему получения ответа, всего ответа и ничего, кроме ответа. Так что помогите нам с TCP.
Надеюсь, это поможет!
Я предлагаю вам попробовать свой код на стандартном, хорошо протестированном и широко распространенном веб-сервере, установленном на вашем собственном локальном компьютере, таком как Apache HTTPD или IIS.
Настройте свой веб-сервер для ответа без заголовка Host (например, веб-приложение по умолчанию в IIS) и посмотрите, все ли в порядке.
В итоге вы не можете точно сказать, что происходит за кулисами, поскольку вы не контролируете веб-сайты / веб-приложения, такие как google, yahoo и т. Д.
Например, администратор веб-сайта может настроить сайт так, чтобы не было приложения по умолчанию для входящих TCP-подключений на порт 80 с использованием протокола HTTP.
Но он / она может захотеть настроить telnet-приложение по умолчанию при подключении через TCP-порт 23 с использованием протокола TELNET.