我在使用 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 地址,是否有不同的实现?
谢谢。