Dealing with Urls in books
Tonight I spent some time reviewing the latest batch of sample code for Volume 2 of the SLAR. As you may recall, Volume 2 covers System.Xml, System.Net, System.Reflection namespaces (among others). I really want every type and nearly every member in the book to have a real, compliable and run-able code sample that shows common usage.
This poses a little bit of a problem for the System.Net samples. Many of them need to refer to a working webserver and some of them require special behavior from that server. I could just point these all at https://localhost, but I fear that would mean many of them would not run correctly on most customer’s machines unless they do some configuration.
Thoughts on how to handle this?
BTW – if you are interested in being a reviewer for Vol2, please let me know…
Here are a couple of examples:
public class EndPointSample
{
public static void Main()
{
IPAddress ip = IPAddress.Parse("127.0.0.1");
IPEndPoint ep = new IPEndPoint(ip, 9999);
Console.WriteLine("EndPoint.AddressFamily = '{0}'",
ep.AddressFamily.ToString());
SocketAddress sktaddr = new
SocketAddress(AddressFamily.InterNetwork);
EndPoint newep = (EndPoint)ep.Create(sktaddr);
Console.WriteLine("New EndPoint.AddressFamily = '{0}'",
newep.AddressFamily.ToString());
}
}
public class DnsSample
{
private static bool bDone = false;
public static void Main()
{
String toFind = "microsoft.com";
IAsyncResult dummy = Dns.BeginResolve(toFind, new AsyncCallback(DnsCallback), null);
while(!bDone) {}
}
private static void DnsCallback(IAsyncResult ar)
{
IPHostEntry host = Dns.EndResolve(ar);
ShowHostDetails(host);
bDone = true;
}
private static void ShowHostDetails(IPHostEntry host)
{
Console.WriteLine("HostName = '{0}'", host.HostName);
foreach (IPAddress addr in host.AddressList)
{
Console.WriteLine("IPAddress = {0}", addr.ToString());
}
foreach (String alias in host.Aliases)
{
Console.WriteLine("Alias = {0}", alias);
}
}
}
public class HttpStatusCodeSample
{
public static void Main()
{
HttpWebRequest req = (HttpWebRequest)
WebRequest.Create("https://localhost");
HttpWebResponse result = (HttpWebResponse)req.GetResponse();
Console.WriteLine("HttpWebResponse.StatusCode = {0}",
result.StatusCode.ToString());
}
}