У меня возникла проблема с использованием TcpClient для отправки данных через поток, записанный StreamWriter.
private void sendMessage(string[] hostlist, string message)
{
foreach (string host in hostlist)
{
try
{
messageClient = new TcpClient(host, 24300);
StreamWriter writer = new StreamWriter(messageClient.GetStream());
writer.Write(message);
writer.Flush();
}
catch (Exception)
{
MessageBox.Show("Error 1\n" +
"This may be due to two things:\n" +
"1. The hostname is invalid.\n" +
"2. The destination computer is not online.",
"Error Sending Message", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
Проблема заключается в том, где инициализируется messageClient. Если я использую IP-адрес, зависаний нет вообще, сообщение мгновенно отправляется и принимается. Однако, если я использую имя хоста, такое как «lappy» (имя моего ноутбука), программа полностью зависает ровно на 6 секунд, а затем отправляет сообщение. Это происходит каждый раз, когда вы пытаетесь отправить сообщение, используя имя хоста. Есть ли что-то, что я делаю неправильно здесь? Есть ли другая реализация, если вам нужно использовать имена хостов, а не IP-адреса?
Спасибо.