У меня есть следующий код c # для запроса whois-серверов, иногда я подключаюсь к серверу, и сокет никогда не истечет время ожидания (к сожалению, если я снова подключусь к тому же серверу, проблема внезапно исчезнет).Я установил значение ReceiveTimeout, кто-нибудь знает, что здесь происходит не так?
string whoisServer = "whois.moniker.com";
Socket s = null;
IPAddress ipAddress;
ipAddress = Dns.GetHostEntry(whoisServer).AddressList[0];
s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
s.ReceiveTimeout = 10000;
s.SendTimeout = 10000;
s.Connect(new IPEndPoint(ipAddress, 43));
s.Send(Encoding.ASCII.GetBytes(domain + "\r\n"));
byte[] buffer = new byte[1024];
int recv = s.Receive(buffer);
while (recv > 0)
{
ret += Encoding.ASCII.GetString(buffer, 0, recv);
recv = s.Receive(buffer);
}
s.Shutdown(SocketShutdown.Both);
s.Close();