2014年8月23日 星期六

選寫網路程式基礎常用物件

範例一  NET 常用的物件

//用於存取IP的 IPAddress
            IPAddress ip = IPAddress.Parse("192.168.1.143");
            Console.WriteLine("MyIp=" + ip);
//存取IP跟 PORT,將網路端點表示成 IP 位址和通訊埠編號。
            IPEndPoint Port = new IPEndPoint(ip, 80);
            Console.WriteLine("the port is=" + Port);
 // IPEndPoint.Serizlize()  將端點資訊序列化為 SocketAddress 執行個體。
//疑問? 話說序列化為 SocketAddress  能幹啥?
            SocketAddress Soket = Port.Serialize();
            Console.WriteLine("socketAddr=" + Soket);
//印出 socketAddr {InterNetwork:16:{0,80,192,168,1,143,0,0,0,0,0,0,0,0}}
            Console.ReadLine();//




           
範例二  用IP來取得主機名稱

//範例IP yahoo: 192.168.1.143 名子是JASON-PC
            IPAddress ipAddr = IPAddress.Parse("192.168.1.143");
 // 透過DNS找尋IP位址相對應之主機名稱
            IPHostEntry remoteHostEntry = Dns.GetHostEntry(ipAddr);  
 //呼叫IPHostEntry中的HostName及可取得 HOST的 NAME
            Console.WriteLine("host of ip " + ipAddr + " is " + remoteHostEntry.HostName);
            Console.ReadLine();
//印出JASON-PC







範例三   使用 DNS 查詢 IP

 //可輸入本機號碼 Jason-PC 將獲得IP: 192.168.1.143
//也可以輸入tw.yahoo.com 將獲得IP: 202.43.192.109
            string DoMainName = "tw.yahoo.com";
            IPHostEntry hostEntry = Dns.GetHostEntry(DoMainName);
 // 由於主機有可能有一個以上的 (別名)Alias      
// 因此程式中以迴圈方式判斷 Aliases
            string[] aliasList = hostEntry.Aliases;
            for (int i = 0; i <= aliasList.Length - 1; i++)
            {
                Console.WriteLine("Alias " + i + " : " + aliasList[i]);
            }      
 // 由於主機有可能有一個以上的 IP Address
 // 因此程式中以迴圈方式判斷 AddressList
            IPAddress[] addrList = hostEntry.AddressList;//DNS轉IP

            for (int i = 0; i <= addrList.Length - 1; i++)
            {
                Console.WriteLine("Address " + i + " : " + addrList[i]);
            }
            Console.ReadLine();



範例四:剖析網址 URL
            // 由於 DOS 的命令列會以 & 符號做命令分隔字元,因此、若以指令模式下,網址中的 & 之後會被視為是下一個指令
            System.Uri URL = new System.Uri("http://findbook.tw/search?keyword_type=keyword&t=xxx");
            //        System.Uri URL = new System.Uri(args[0]);
            // System.Uri類別之屬性
            Console.WriteLine("AbsolutePath: " + URL.AbsolutePath);
            Console.WriteLine("AbsoluteUri: " + URL.AbsoluteUri);
            Console.WriteLine("Authority: " + URL.Authority);
            Console.WriteLine("Host: " + URL.Host);
            Console.WriteLine("Port: " + URL.Port);
            Console.WriteLine("LocalPath: " + URL.LocalPath);
            Console.WriteLine("IsDefaultPort: " + URL.IsDefaultPort);
            Console.WriteLine("IsFile: " + URL.IsFile);
            Console.WriteLine("PathAndQuery: " + URL.PathAndQuery);
            Console.WriteLine("Query: " + URL.Query);
            Console.WriteLine("Scheme: " + URL.Scheme);
            Console.WriteLine("UserEscaped: " + URL.UserEscaped);
            Console.WriteLine("UserInfo: " + URL.UserInfo);
            Console.ReadLine();





//結語
//微軟 C# 的 IP 層物件主要是 IPAddress 與 IPEndPoint,
//另外 IPHostEntry可以用來代表 URL,也可以用 Dns.GetHostEntry()
//查詢主機名稱。這些是 C# 較常使用的 IP 層物件。


沒有留言:

張貼留言