240 likes | 398 Views
課程參與度之評估方式. 上課時必須專心聽講,跟上進度,參與討論 扣 分項目 玩線上遊戲一次扣 1 分 玩手機一次扣 1 分 睡覺一次扣 1 分 聊天一次扣 1 分 無法回答老師提出的問題一次扣 1 分 加分項目 主動回答老師的問題一次加 2 分 找出老師程式中的錯誤一次加 1 分 修正老師程式中的錯誤一次加 4 分. 網路程式設計 CH01 網路程式設計導論. 鄧姚文. 大綱. 網路程式的應用 實 作的方法 TCP 通訊協定應用 UDP 通訊協定應用 IPv6 網際網路標準 圖形介面. 前言. 以 JAVA 開發網路程式的優點
E N D
課程參與度之評估方式 • 上課時必須專心聽講,跟上進度,參與討論 • 扣分項目 • 玩線上遊戲一次扣1分 • 玩手機一次扣1分 • 睡覺一次扣1分 • 聊天一次扣1分 • 無法回答老師提出的問題一次扣1分 • 加分項目 • 主動回答老師的問題一次加2分 • 找出老師程式中的錯誤一次加1分 • 修正老師程式中的錯誤一次加4分
大綱 網路程式的應用 實作的方法 TCP通訊協定應用 UDP通訊協定應用 IPv6 網際網路標準 圖形介面
前言 • 以 JAVA 開發網路程式的優點 • JAVA 提供易用的網路程式介面套件 • JAVA 具備多執行緒功能,可以讓通訊過程更順暢 • JAVA 跨平台 • 缺點 • JAVA 不支援低階的網路協定 • 不支援 ICMP • 受到安全機制的限制
網路程式的應用 • 網路協定 Network Protocol • 通訊協定 Protocol • TCP/IP 是目前使用最廣泛的網路協定 • 基於 TCP/IP 的應用 • WWW、FTP、Email、Skype、P2P、連線遊戲、網路電話、網路電視 • IPv4 的 IP 位址已經發完 • IPv6 還不流行 • 為什麼不用 IPv6 ?
網路程式的應用傳輸資料 • FTP • File Transfer Protocol • 檔案傳輸協定 • 工具:Filezilla、CuteFTP • P2P • Peer to Peer • 點對點傳輸 • 工具:eMule、BitTorrent、
網路程式的應用遊戲 • 線上遊戲 • 市場規模上百億元 • 線上遊戲產業描述
網路程式的應用即時訊息 • Facebook • Skype • 微型部落格 • Plurk • Twitter
網路程式的應用伺服器 • 服務:Service • 伺服器:Server • 網站伺服器:Web Server • 佔用 80 Port • FTP伺服器 • 佔用 21 Port • 電子郵件伺服器 • 佔用 25 Port
實作的方法 • 開發服務軟體前,需要一個溝通的規範,這個為需求與服務而訂定的標準與規範就是『通訊協定』(Protocol) • 通訊協定就像是日常生活中的「語言」 • 使用現有的協定 • 以 http 傳送文件、命令 • 以 ftp 傳送大檔案 • 創造協定 • 自行定義特有的協定
TCP 協定應用 • TCP • Transmission Control Protocol • 傳輸 控制 協定 • 連線導向 Connection-Oriented • 保證送達 • 依照先後順序 • 適合需要穩定連線且可靠傳輸機制的用途 • 應用範例 • telnet, www, email, ftp
Java 語言支援 TCP/IP 協定 • 用戶端(client)-Socket 類別 Socket socket = new Socket("ptt.cc", 23); socket.connect(); • 伺服器-ServerSocket類別 //建立ServerSocket物件,並指定傾聽埠為23 ServerSocket server = new ServerSocket(23); //開始等待客戶端連線至23埠 Socket socket = server.accept(); //客戶端連線完成, 取得socket物件 //進行通訊協定實作
UDP 協定應用 • UDP • User Datagram Protocol • 使用者 資料包 協定 • 非連線導向 Connection Less • 不保證送達 • 不保證依照先後順序 • UDP省去連線建立時間、不需要如TCP複雜的封包表頭、提昇傳輸效率 • 應用範例 • DNS, SNMP, DHCP, RIP
Java 語言支援 UDP/IP協定 • Java 的 UDP 使用類別 java.net.DatagramSocket • UDP 用戶端(送出端) • 產生一個UDP封包,並指定目的地主機 IP 與埠號 String s = "ABC"; byte[] data = s.getBytes(); SocketAddressdest = newInetSocketAddress("192.168.1.10", 9996); DatagramPacketpacket = newDatagramPacket(data, data.length, dest); DatagramSocket ds = newDatagramSocket(); ds.send(packet);
Java 語言支援 UDP/IP 協定 • UDP 伺服器(接收端) • 為即將來到的 UDP 封包準備一個 DatagramPacket物件後,使用 DatagramSocket傾聽特定埠號 byte[] buffer = newbyte[10]; DatagramPacketpkt = newDatagramPacket(buffer, 10); DatagramSocket ds = newDatagramSocket(9950); ds.receive(pkt);
UDP 協定應用傳送端 String s = "Hello Java!"; byte[] data = s.getBytes(); SocketAddressdest = new InetSocketAddress("192.168.1.2", 8765); DatagramPacket packet = new DatagramPacket(data, data.length, dest); DatagramSocket sender = new DatagramSocket(); sender.send(packet);
UDP 協定應用接收端 byte[] buffer = new byte[1024]; DatagramPacket packet = new DatagramPacket(buffer, buffer.length); DatagramSocket receiver = new DatagramSocket(8765); receiver.receive(packet);
IPv6 • JAVA 支援 IPv4 也支援 IPv6 • JDK 1.4 以上(含)的版本支援IPv4與IPv6 • IPv4: IP 位址長度為 4 Bytes(32位元) • java.net.preferIPv4Stack : true/false • IPv6: IP 位址長度為 16 Bytes(128位元) • java.net.preferIPv6Addresses : true/false • 開發時使用網域名稱(Domain Name)不用煩惱 IPv6 和 IPv4 的位址差異
IPv6 System.setProperty("java.net.preferIPv6Addresses", "true"); • 在 Java 程式中以系統變數選擇 IPv4 或 IPv6 • java.net.preferIPv4Stack(偏好使用IPv4) • 預設值是 false,表示同時支援 IPv4 與 IPv6, • 若設為 true,表示只使用 IPv4。 • java.net.preferIPv6Addresses(偏好使用IPv6) • 預設值為 false
網際網路標準 • 網際網路工程任務小組 IETF(Internet Engineering Task Force) • 負責研究與制定網際網路標準的任務組的集合 • 每個工作群組由委員會協助制定或研發新的標準 • RFC • Request For Comment • 徵求評論
網際網路標準 • 全球資訊網協會 W3C(World Wide Web Consortium) • 解決在不同平台提供網頁服務技術時所衍生出的不相容問題 • 網頁服務標準的制定者 • 制定 HTML、XML、DOM 與 CSS 等 • 推薦標準(Recommendation)
圖形介面 • 不一定每一支程式都需要漂亮的操作介面 • 網路伺服器程式通常沒有畫面,在背景默默地執行 • LOG:系統紀錄 • 沒有畫面的程式通常產生系統紀錄,以便稽查 • JAVA 視窗程式設計 • AWT • SWING