Skip to content

The Dummy Programmer

Stories of daily programming

  • Home
  • My other dummy projects
  • Games
    • Space Y: An Asteroids clone
  • Services
    • What’s my user agent
    • What’s my IP address
  • About
  • Toggle search form

System.Net.Sockets.SocketException (0x80004005): No such host is known

Posted on October 26, 2020October 26, 2020 By

I was working on an old ASP.NET application written in C#, which uses the following method to code to get the IP address of the server it runs on:

public string GetIPAddress()
{
   IPHostEntry Host = default(IPHostEntry);
   string Hostname = null;
   Hostname = System.Environment.MachineName;
   Host = Dns.GetHostEntry(Hostname);
   string IPAddress = "";
   foreach (IPAddress IP in Host.AddressList)
   {
      if (IP.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
      {
         IPAddress = Convert.ToString(IP);
      }
   }
   return IPAddress;
}

Apart from the doubt about the correctness of the code to obtain the IP address of the machine, at the line with the call to “Dns.GetHostEntry”, I got the following error: “System.Net.Sockets.SocketException (0x80004005): No such host is known”.

Consider that this code always worked in other environments, but on this server I got the exception above. I didn’t have much time, so I looked for a quick and dirty solution….

The problem seemed to be due to the fact that the call to “Dns.GetHostEntry” could not resolve the machine name in a valid Host object. So I tried to modify the windows file “host”, which you can find in “C:\Windows\System32\drivers\etc”, in the following way.

# Copyright (c) 1993-2009 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
#      102.54.94.97     rhino.acme.com          # source server
#       38.25.63.10     x.acme.com              # x client host

# localhost name resolution is handled within DNS itself.
#	127.0.0.1       localhost
#	::1             localhost

# Added the following line to solve the "No such host is known" error...
10.0.0.5			SDAADMIN384759XXX

On the left you can see the IP address of the server (in this case a private IP address because the server is behind a NAT), and on the right you can see the host name. Pay attention: the host name you enter must match the host name you would get calling “System.Environment.MachineName”.

Using this workaround I managed to avoid the exception and get the application running without modifying the source code, maybe getting a wrong IP address but in this case it wasn’t important.

ASP.NET, C#, DNS

Post navigation

Previous Post: Reading data from a NetworkStream object in C#
Next Post: Splitting a big file in multiple small files

Related Posts

A chat program built in C# with .NET socket library C#
Working with C# async / await keywords (part 1 of 3) C#
Configure access permission to a folder for an IIS Application pool ASP.NET
NPOI and Excel found unreadable content in ‘[filename].xls’ ASP.NET
Could not load file or assembly ‘DocumentFormat.OpenXml, Version=2.7.2.0 C#
Put an ASP.NET website under maintenance ASP.NET

Search

Related posts

  • Plesk panel update error on Linux CentOS 7: The GPG…
  • Push notifications library with C# and .NET Framework
  • Put an ASP.NET website under maintenance
  • A chat program built in C# with .NET socket library

Categories

  • .NET 6 (1)
  • .NET 7 (1)
  • AJAX (1)
  • Android (2)
  • Apache (4)
  • ASP.NET (9)
  • ASP.NET MVC (3)
  • Avalonia UI (1)
  • BCP (1)
  • Bitlocker (2)
  • C# (14)
  • CentOS (4)
  • ClosedXML (1)
  • CLR (1)
  • DNS (1)
  • Encryption (3)
  • Excel (2)
  • FuelPHP (3)
  • Games (2)
  • Google Chrome (1)
  • GSuite (1)
  • HTML (1)
  • Imagick (2)
  • Javascript (1)
  • Kindle (1)
  • LAMP (3)
  • Linux (7)
  • MariaDB (2)
  • Mathematics (2)
  • MySql (4)
  • NPOI (1)
  • Office 365 (1)
  • Perl (1)
  • PHP (6)
  • Programming (1)
  • Remote desktop (1)
  • SFTP (2)
  • Sockets (3)
  • Sql Server (20)
  • Sql Server 2016 (14)
  • Sql Server 2019 (1)
  • SSL (4)
  • Task scheduler (1)
  • Telerik ASP.NET AJAX (2)
  • The Dummy Programmer Chat (2)
  • Threading (5)
  • Tools (1)
  • TPL (3)
  • TypeScript (3)
  • Ubuntu (4)
  • Virtualization software (3)
  • Visual Studio (1)
  • Visual Studio Code (2)
  • VueJS (1)
  • Web fonts (1)
  • Web programming (6)
  • Windows (12)
  • Windows 10 (15)
  • Windows Forms (1)
  • Windows Server (6)

Copyright © 2024 The Dummy Programmer | Privacy Policy | Terms of use |

Powered by PressBook Masonry Dark

Manage Cookie Consent
This site doesn’t collect user personal data and doesn’t install profiling or analytical cookies, either its own or from third parties. Read our privacy policy for more info.
Functional Always active
The technical storage or access is strictly necessary for the legitimate purpose of enabling the use of a specific service explicitly requested by the subscriber or user, or for the sole purpose of carrying out the transmission of a communication over an electronic communications network.
Preferences
The technical storage or access is necessary for the legitimate purpose of storing preferences that are not requested by the subscriber or user.
Statistics
The technical storage or access that is used exclusively for statistical purposes. The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
Marketing
The technical storage or access is required to create user profiles to send advertising, or to track the user on a website or across several websites for similar marketing purposes.
Manage options Manage services Manage {vendor_count} vendors Read more about these purposes
View preferences
{title} {title} {title}