網路程式設計 - C# 版 日期 : 2018/12/10.

Slides:



Advertisements
Similar presentations
软件编程基础 一、程序的编辑 Java 源程序是以 Java 为后缀的简单的文本文件,可以用各种 Java 集成开发环境中的源代码编辑器来编写,也可以用其他文 本编辑工具,如 Windows 中的记事本或 DOS 中的 EDIT 软件等。 利用文字编辑器编写下列程序 public class Hello.
Advertisements

单元二:面向对象程序设计 任务二:借书卡程序设计.
第三讲 面向对象(上).
项目6 通用堆栈.
动态网站开发 【HTTP与网络基础】 李博杰
Java程序设计教程 第一讲 Java概述.
四資二甲 第三週作業 物件導向程式設計.
轻量级HTTP服务器/反向代理服务器nginx
面向对象的程序设计(一).
MVC Servlet与MVC设计模式.
C#程序设计 10软件1、2班 王槐彬 计算机工程学院.
第二章 JAVA语言基础.
Microsoft Application Center Test
第三章 控制结构.
Ch08 巢狀類別 物件導向程式設計(II).
VISUAL BASIC 2008 網路程式設計 文魁資訊股份有限公司.
程式設計實作.
第5章 异常处理 王德俊 上海交通大学继续教育学院.
第 13 章 DNS 著作權所有 © 旗標出版股份有限公司.
Java语言程序设计 清华大学出版社 第9章 网络通信.
本 章 重 點 18-1 Internet的由來與對生活的影響 18-2 Internet的服務與相關名詞簡介 18-3 IP位址表示法
第二章 C# 基础知识.
第四章 在 C# 中实现 OOP 概念.
例外處理(Exception Handling)
Java 第28讲:建立删除文件 主讲教师:李焱 讲师.
美女图片 下载器开发 之.Net篇 如鹏网.
程序與函數的類別方法 目的:模組化程式設計 方法:由上而下設計 注意事項:(1)獨立性 (2)結合問題 (3)子問題間的溝通.
C# 的 Web 相關物件之使用 日期 : 2018/11/21.
第14章 建立網路應用程式 14-1 瀏覽器的建立 14-2 檔案下載器 14-3 寄送電子郵件 14-4 檢查POP 3的電子郵件.
第十三章 文件和注册表操作.
C#程序设计 c# programming 网络编程 C#程序设计课程组.
ContentProvider與資料共享
程式設計實作.
C#面向对象程序设计 $7 继承和多态性.
張智星 台大資工系 多媒體檢索實驗室 第九章 小餅乾(Cookies) 張智星 台大資工系 多媒體檢索實驗室.
3.1 数据类型 3.2 标识符与关键字 3.3 常量 3.4 变量 3.5 运算符与表达式 3.6 一个编程实例
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
2019/1/17 Java语言程序设计-程序流程 教师:段鹏飞.
第 十二 章 C# 中的文件处理.
Ch02-基礎語法.
C/C++/Java 哪些值不是头等程序对象
電子商務網站架設技術 利用FB做Login
C#程序设计基础 第二章 数据类型.
第六章 属性、索引器、委托和事件.
解析系統介紹 TWNIC 2000年11月27日.
* 單元:電腦與問題解決 主題:Java物件導向程式設計-類別與物件 台南縣國立善化高中 蕭嘉民 老師
第三章 C# 基础知识.
Web Server 王宏瑾.
透過YouTuBe API取得資料 建國科技大學 資管系 饒瑞佶 2018/1 V1.
辅导课程八.
《JAVA程序设计》 语音答疑 辅导老师:高旻.
第二章 Java基本语法 讲师:复凡.
C#程序设计基础 $3 成员、变量和常量.
_01基本概念扫盲 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司 官网地址:
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
2019/5/3 JAVA Socket(UDP).
第二章 Java基本语法 讲师:复凡.
Review 1~3.
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
龍老師我不會Debug QQ.
第二章 Java基本语法 讲师:复凡.
辅导课程十二.
助教:廖啟盛 JAVA Socket(UDP) 助教:廖啟盛
JAVA 程式設計與資料結構 第三章 物件的設計.
DNS CACHE POISONING A 曾子桐 指導教授: 梁明章.
判斷(選擇性敘述) if if else else if 條件運算子.
第二章 Java基础语法 北京传智播客教育
輸出執行結果到螢幕上 如果要將執行結果的文字和數值都「輸出」到電腦螢幕時,程式要怎麼寫? class 類別名稱 {
第二章 Java基本语法 讲师:复凡.
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
Presentation transcript:

網路程式設計 - C# 版 日期 : 2018/12/10

範例 4-1 : IPAddress.Parse IPAddress ipAddr1 = IPAddress.Parse(txtIP1.Text); 2 陳鍾誠 - 2018/12/10

範例 4-2 : IsLoopback if (IPAddress.IsLoopback(address) && address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork) // 為IPv4及回送位址 …. else if (IPAddress.IsLoopback(address) && address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetworkV6) // 為IPv6及回送位址 ….. 3 陳鍾誠 - 2018/12/10

範例 4-3 : IPEndPoint IPAddress address = IPAddress.Parse(txtIP.Text); IPEndPoint ipEndPoint = new System.Net.IPEndPoint(address, Int32.Parse(txtPort.Text)); // 將IPEndPoint序列化為SocketAddress SocketAddress socketAddr = ipEndPoint.Serialize(); 4 陳鍾誠 - 2018/12/10

範例 4-4 : Dns.GetHostEntry IPHostEntry hostEntry = Dns.GetHostEntry(txtHost.Text); // 由於主機有可能有一個以上的 Alias // 因此程式中以迴圈方式判斷 Aliases aliasList = hostEntry.Aliases; for (int i = 0; i <= aliasList.Length - 1; i++) strTemp = strTemp + aliasList[i].ToString() + " "; txtAlias.Text = strTemp; // 由於主機有可能有一個以上的 IP Address // 因此程式中以迴圈方式判斷 AddressList IPAddress[] addrList = hostEntry.AddressList; for (int i = 0; i <= addrList.Length - 1; i++) strTemp = strTemp + addrList[i].ToString() + " "; txtIP.Text = strTemp; 5 陳鍾誠 - 2018/12/10

範例 4-5 : Dns.GetHostName() // 取得Local主機的識別名稱 string localHostName = Dns.GetHostName() ; TextBox1.Text = localHostName ; 6 陳鍾誠 - 2018/12/10

範例 4-6 : GetHostName localHostName = Dns.GetHostName(); localHostEntry = Dns.GetHostByName(localHostName); txtHost.Text = localHostEntry.HostName; // 由於主機有可能有一個以上的 Alias // 因此程式中以迴圈方式判斷 Aliases aliasList = localHostEntry.Aliases; for (int i = 0; i <= aliasList.Length - 1; i++) strTemp = strTemp + aliasList[i].ToString() + " "; txtAlias.Text = strTemp; // 由於主機有可能有一個以上的 IP Address // 因此程式中以迴圈方式判斷 AddressList addrList = localHostEntry.AddressList; for (int i = 0; i <= addrList.Length - 1; i++) strTemp = strTemp + addrList[i].ToString() + " "; txtIP.Text = strTemp; 7 陳鍾誠 - 2018/12/10

範例 4-7 : GetHostByName remoteHostEntry = Dns.GetHostByName(txtHost.Text); // 由於主機有可能有一個以上的 Alias // 因此程式中以迴圈方式判斷 Aliases aliasList = remoteHostEntry.Aliases; for (int i = 0; i <= aliasList.Length - 1; i++) strTemp = strTemp + aliasList[i].ToString() + " "; txtAlias.Text = strTemp; strTemp = ""; // Add by CCC // 由於主機有可能有一個以上的 IP Address // 因此程式中以迴圈方式判斷 AddressList addrList = remoteHostEntry.AddressList; for (int i = 0; i <= addrList.Length - 1; i++) strTemp = strTemp + addrList[i].ToString() + " "; txtIP.Text = strTemp; 8 陳鍾誠 - 2018/12/10

範例 4-8 : GetHostByAddress ipAddr = IPAddress.Parse(txtIP.Text); // 透過DNS找尋IP位址相對應之主機名稱 remoteHostEntry = Dns.GetHostByAddress(ipAddr); txtHost.Text = remoteHostEntry.HostName; 9 陳鍾誠 - 2018/12/10

範例 4-9 : Dns.Resolve(host) IPHostEntry hostEntry = Dns.Resolve(txtIP.Text); IPAddress[] addrList = hostEntry.AddressList; strTemp = ""; for (int i = 0; i <= addrList.Length - 1; i++) strTemp = strTemp + addrList[i].ToString() + "\r\n"; MessageBox.Show("Address List: " + "\r\n" + strTemp, "DNS Resolve", essageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1) ; 10 陳鍾誠 - 2018/12/10

範例 4-10 : URI System.Uri URL = null; string sResult = ""; URL = new System.Uri(txtURL.Text); // System.Uri類別之屬性 sResult = "AbsolutePath: " + URL.AbsolutePath + "\r\n"; sResult = sResult + "AbsoluteUri: " + URL.AbsoluteUri + "\r\n"; sResult = sResult + "Authority: " + URL.Authority + "\r\n"; sResult = sResult + "Host: " + URL.Host + "\r\n"; sResult = sResult + "Port: " + URL.Port + "\r\n"; sResult = sResult + "LocalPath: " + URL.LocalPath + "\r\n"; sResult = sResult + "IsDefaultPort: " + URL.IsDefaultPort + "\r\n"; sResult = sResult + "IsFile: " + URL.IsFile + "\r\n"; sResult = sResult + "PathAndQuery: " + URL.PathAndQuery + "\r\n"; sResult = sResult + "Query: " + URL.Query + "\r\n"; sResult = sResult + "Scheme: " + URL.Scheme + "\r\n"; sResult = sResult + "UserEscaped: " + URL.UserEscaped + "\r\n"; sResult = sResult + "UserInfo: " + URL.UserInfo + "\r\n"; 11 陳鍾誠 - 2018/12/10

範例 4-11:Cookie string strBuff = ""; System.Net.Cookie cookie = new System.Net.Cookie("HASH", "", "/", "microsoft.com"); strBuff = "Comment: " + cookie.Comment.ToString() + "\r\n"; strBuff = strBuff + "Domain: " + cookie.Domain.ToString() + "\r\n"; strBuff = strBuff + "Expired: " + cookie.Expired.ToString() + "\r\n"; strBuff = strBuff + "Expires: " + cookie.Expires.ToString() + "\r\n"; strBuff = strBuff + "Name: " + cookie.Name.ToString() + "\r\n"; strBuff = strBuff + "Path: " + cookie.Path.ToString() + "\r\n"; strBuff = strBuff + "Port: " + cookie.Port.ToString() + "\r\n"; strBuff = strBuff + "Secure: " + cookie.Secure.ToString() + "\r\n"; strBuff = strBuff + "Value: " + cookie.Value.ToString() + "\r\n"; strBuff = strBuff + "Version: " + (cookie.Version == 1 ? "2109" : "2965") + "\r\n"; txtCookie.Text = strBuff; 12 陳鍾誠 - 2018/12/10

範例 4-12 : Web Request 陳鍾誠 - 2018/12/10 // 以WebRequest抽象類別的Create方法建立WebRequest物件 request = WebRequest.Create(new Uri(txtURL.Text)); // WebRequest類別之屬性 // 連結群組名稱 if (request.ConnectionGroupName != null) result = result + "ConnectionGroupName: " + request.ConnectionGroupName.ToString() + "\r\n"; // 用戶端所傳送資料內容的大小(byte) if (request.ContentLength != -1) result = result + "ContentLength: " + request.ContentLength.ToString() + "\r\n"; … // 是否要求預先驗證 result = result + "PreAuthenticate: " + request.PreAuthenticate + "\r\n"; // 用戶端所傳送的URI result = result + "RequestUri: " + request.RequestUri.ToString() + "\r\n"; txtRequest.Text = result; 13 陳鍾誠 - 2018/12/10

範例 4-13 : Web Response 陳鍾誠 - 2018/12/10 // 以WebRequest抽象類別的Create方法建立WebRequest物件 request = WebRequest.Create(new Uri(txtURL.Text)); // 使用WebRequest類別的GetResponse方法建立WebResponse物件 response = request.GetResponse(); // WebResponse類別之屬性 // 用戶端所接收資料內容的大小(byte) result = result + "ContentLength: " + response.ContentLength.ToString() + "\r\n"; // 用戶端所接收資料內容的MIME格式 result = result + "ContentType: " + response.ContentType.ToString() + "\r\n"; // 用戶端所接收的URI result = result + "ResponseUri: " + response.ResponseUri.ToString() + "\r\n"; // 取得伺服端回應串流 System.IO.Stream respStream = response.GetResponseStream(); // 設定編碼為UTF-8並取得伺服端回應串流的內容 StreamReader respStreamReader = new StreamReader(respStream, Encoding.UTF8); string strBuff = ""; char[] cbuffer = new char[256]; int byteRead = respStreamReader.Read(cbuffer, 0, 256); while (byteRead != 0) { string strResp = new string(cbuffer, 0, byteRead); strBuff = strBuff + strResp; byteRead = respStreamReader.Read(cbuffer, 0, 256); } respStream.Close(); // 關閉回應串流 response.Close(); result = result + "\r\nResponse: \r\n\r\n" + strBuff; txtResponse.Text = result; 14 陳鍾誠 - 2018/12/10

IPAddress 範例 using System; using System.Net; class IPAddressTest { static void Main() { IPAddress ipAddr = IPAddress.Parse("210.59.154.30"); Console.WriteLine("ipAddr="+ipAddr); IPEndPoint ipEndPoint = new System.Net.IPEndPoint(ipAddr, 80); Console.WriteLine("ipEndPoint=" + ipEndPoint); // 將IPEndPoint序列化為SocketAddress SocketAddress socketAddr = ipEndPoint.Serialize(); Console.WriteLine("socketAddr=" + socketAddr); } 15 陳鍾誠 - 2018/12/10

Dns 範例 using System; using System.Net; class DnsTest { static void Main(String[] args) IPHostEntry hostEntry = Dns.GetHostEntry(args[0]); // 由於主機有可能有一個以上的 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; for (int i = 0; i <= addrList.Length - 1; i++) Console.WriteLine("Address " + i + " : " + addrList[i]); } 16 陳鍾誠 - 2018/12/10

IpToHost using System; using System.Net; using System.Net.Sockets; class IpToHost { static void Main(String[] args) IPAddress ipAddr = IPAddress.Parse(args[0]); // 透過DNS找尋IP位址相對應之主機名稱 IPHostEntry remoteHostEntry = Dns.GetHostEntry(ipAddr); Console.WriteLine("host of ip " + ipAddr + " is " + remoteHostEntry.HostName); } 17 陳鍾誠 - 2018/12/10

UrlParseTest using System; using System.Net; class UrlParseTest { static void Main(String[] args) { System.Uri URL = null; 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); }} 18 陳鍾誠 - 2018/12/10