助教:廖啟盛 suboy@hotmail.com.tw JAVA Socket(UDP) 助教:廖啟盛 suboy@hotmail.com.tw.

Slides:



Advertisements
Similar presentations
網路程式設計 (Network Programming)
Advertisements

第五章 網際網路 5-1 網際網路的歷史沿革 5-2 網際網路基本運作原理 5-3 連線媒介與連線上網 5-4 網際網路上的熱門應用
《网络基础与Internet应用》.
第 8 章 IP 基礎與定址.
第7章 防 火 墙 技 术 7.1 防火墙概念 7.2 防火墙原理及实现方法 7.3 防火墙体系结构 7.4 防火墙的构成
计算机网络(第 6 版) 第 6 章 应用层 青岛理工大学通信与电子工程学院.
第 12 章 UDP 與 TCP.
第一章 概 述.
Java程序设计教程 第一讲 Java概述.
Java的程式架構與基本觀念 Java語言的歷史 Java程式的開發環境 Java程式的架構 輸出與輸入物件之使用 工具使用方法介紹
四資二甲 第三週作業 物件導向程式設計.
Chapter 12 UDP 與 TCP.
第2章 计算机网络的协议与体系结构 2.1 计算机网络体系结构的形成 2.2 协议与划分层次 2.3 计算机网络的原理体系结构
第1章 概述.
Foundations of Computer Science Chapter 6 電腦網路
计算机系统安全 第10章 常用攻击手段.
第二章 JAVA语言基础.
Socket.
網路基本概念與設定方法 林文宗 資管系助理教授
基于WinSock的邮件系统 1 设计目标: 1.1 SMTP发送邮件服务器(c语言) 1.2 POP3接受邮件服务器(c语言)
第5章 网络软件 开发技术 (一) 软件开发技术基础 计算机教学实验中心.
学习目标: 1)理解包和包过滤 2)理解包过滤的方法 3)设置特殊的包过滤规则
網路概論.
Core Switch 設定 Port的開啟與關閉 Virtual LAN建立 將Port指定到Virtual LAN
传输层是整个协议层次的核心,其任务是在源机器和目标机器之间提供可靠的、性价比合理的数据传输功能,并与当前所使用的物理网络完全独立
第 12 章 UDP 與 TCP.
2.1 基本資料型別 2.2 變數 2.3 運算式與運算子 2.4 輸出與輸入資料 2.5 資料型別轉換 2.6 實例
計中「多媒體與網路應用」短期訓練課程 FTP server 架設 (in Windows)
通訊協定 OSI分層模式 與 TCP/IP協定
Java语言程序设计 清华大学出版社 第9章 网络通信.
第3讲 网络安全协议基础 此为封面页,需列出课程编码、课程名称和课程开发室名称。
Socket Programming in C
第五章 網際網路 5-1 網際網路的歷史沿革 5-2 網際網路基本運作原理 5-3 連線媒介與連線上網 5-4 網際網路上的熱門應用
Socket 基本觀念.
網路服務 家庭和小型企業網路 – 第六章.
P2P通信之 ——UDP穿越NAT方案的讨论
TCP/IP Protocol Suite TCP/IP協定 第二組 投影片製作by簡嘉宏 綦凱宏 林睿敏 滕孟哲.
C#程序设计 c# programming 网络编程 C#程序设计课程组.
程式設計實作.
第四章 基本輸出入 Java應用程式的輸出入介面有三種,分別是命令提示字元視窗、AWT元件、及Swing元件。本單元先介紹命令提示字元視窗,AWT請看第16、17章,Swing請看第20章。 輸入 輸出.
第 2 章 TCP / IP 簡介.
在一定程度上 人类的思维产生于 简单个体之间的相互作用 ——Marvin Minsky.
西南科技大学网络教育系列课程 高级语程序设计(Java) 第十一章 Java 中的网络编程.
2018/12/3 面向对象与多线程综合实验-网络编程 教师:段鹏飞.
考试题型 填空题(30) 选择题(20) 名词解释(10) 问答题(24) 计算题(16) 附加题(30) 成绩核算:
本章要点: 计算机网络的基本概念 Internet基础 Internet服务
第4章 OSI傳輸層.
DHCP 详解及在 AP 中的使用 韦宇轩 SA
第5讲 网络层 本讲目的: 概述: 理解网络层服务原理: 因特网的实现实例 网络层的服务 路由选择原理 分层的路由选择 IP协议
Chapter 11:Java网络编程 授课教师:赵小敏 浙江工业大学 软件学院
第 12 章 UDP 與 TCP 著作權所有 © 旗標出版股份有限公司.
第十三章 TCP/IP 與 Internet 網路連結技術
第2讲 网络安全协议基础 此为封面页,需列出课程编码、课程名称和课程开发室名称。
Westmont College 网络互连 Part 4 (传输协议, UDP and TCP, 协议端口)
Web Server 王宏瑾.
Westmont College 网络应用软件 第一讲 (客户-服务器 概念, 协议端口的使用, 套接字API)
Network Application Programming(3rd Edition)
Advister: Quincy Wu Speaker: Chenglin Tsai Date:3/26
3.1 通訊協定 3.2 開放系統參考模式(OSI) 3.3 公眾數據網路 3.4 TCP/IP通訊協定
傳輸控制協議 /互聯網協議 TCP/IP.
第三章 資料的傳收與接送 3-1 TCP程式設計 3-2 UDP程式設計 3-3 Socket程式設計 3-4資料的非同步傳送與接收.
Speaker : Chang Kai-Jia Date : 2010/04/26
2019/5/3 JAVA Socket(UDP).
龍老師我不會Debug QQ.
2019/5/20 JAVA Socket(UDP).
第10讲 Web服务.
Internet课程设计 教师:陈 妍 朱海萍 西安交通大学计算机系
IP Layer Basics & Firewall
判斷(選擇性敘述) if if else else if 條件運算子.
第十二章 Java网络编程 1.URL编程 2.Socket网络编程 3.Datagram网络编程.
Presentation transcript:

助教:廖啟盛 suboy@hotmail.com.tw JAVA Socket(UDP) 助教:廖啟盛 suboy@hotmail.com.tw

TCP和UDP的比較 特徵/協定 連線導向(TCP) 非連線導向(UDP) 資料傳送服務的品質 保證遞送,有錯誤的檢查,保證資料到達的順序,提供流量控制與網路故障通知 資料有可能遺失、重複、延遲或是抵達順序錯誤 Socket程式的呼叫 等候連線與資料的接受是阻絕呼叫(Blocking Call) 資料的接收是阻絕呼叫(Blocking Call) 資料傳送的特徵 資料以連續的方式收送,沒有分隔,接收必須做後處理 資料以傳送所有的大小為單位,接收端可以直接當作獨立的訊息處理 連線成本 高 低 使用時機 Unicast Multicast、Broadcast Blocking Call : 在程式執行中遇到Blocking Call,必須等到Blocking原 因移除後才能繼續執行 TCP: UDP:

Port (通訊埠) 通訊協定通常是以port來區隔Internet各個應用服 務 通常有16-bit 代表 216=65536種 編號1~1023是保留號(公認) 所以programming時要注意 可用範圍 : 1024~65535

各種協定的Port (通訊埠) 協定 Port number Transport 協定 DHCP 67(server) / 68(client) UDP DNS 53 TCP/UDP FTP 21(control) / 20(data) TCP HTTP 80 SMTP 25 Telnet 23 POP3 110

Socket Application Socket API TCP UDP Network

Socket Socket在網路應用程式開發上,大致有下列兩大 類: Stream Socket Connection-Oriented Protocol  TCP Datagram Socket Connectionless Protocol  UDP

Socket Socket步驟如下: 建立Client Socket 傳送特定資訊或指令至Server 建立時需指定欲連結Server的主機名稱或IP位址(127.0.0.1)與Internet服務的port 傳送特定資訊或指令至Server 接收Server回傳的執行結果或錯誤訊息,並以特定 格式顯示 例如:HTTP通訊協定會HTML格式顯示 當Client不需Server的處理時,便關閉Socket通訊 連結

Socket API-- Server 所提供的Server端的API函式: Server BSD Socket 說明 socket bind 設定socket所使用的local端IP位址與通訊埠(Port Number) listen 設定socket等候(listen)Client端連結請求(connection request) accept 接受來自Client端的連結請求,並且建立socket連結 recv read 接收來自Client端所傳來的資料(TCP) recvfrom 接收來自Client端所傳來的資料(UDP) send write 傳送資料至Client端(TCP) sendto 傳送資料至Client端(UDP) closesocket 關閉通訊連結及socket,並且釋放系統資源 shutdown 關閉socket的傳送與接收的功能

Socket API-- Client 所提供的Client端的API函式: Client BSD Socket 說明 socket connect 建立與Server端的socket連線 recv read 接收來自Server端所傳來的資料(TCP) recvfrom 接收來自Server端所傳來的資料(UDP) send write 傳送資料至Server端(TCP) sendto 傳送資料至Server端(UDP) closesocket 關閉通訊連結及socket,並且釋放系統資源 shutdown 關閉socket的傳送與接收的功能

UDP Socket Datagram Socket程式開發流程 Server Client Socket() Bind() Closesocket() Sendto() Recvfrom() ( Blocking Call ) Processing

Java Socket API Java.net中支援Datagram Socket (UDP) 應用程式相關的API: Java API 說明 Java.net.DatagramSocket 建立Datagram socket Java.net.DatagramPacket 建立Datagram packet(資料封包) Receive (DatagramSocket) 接收Datagram packet(資料封包) Send (DatagramSocket) 傳送Datagram packet(資料封包) Close 關閉Datagram socket 關鍵字 : Java API https://docs.oracle.com/javase/7/docs/api/

JAVA UDP Socket Java Datagram Socket DatagramSocket DatagramPacket Close send Receive ( Blocking Call) DatagramSocket DatagramPacket Close

使用軟體工具--Eclipse 網址 : http://www.eclipse.org/downloads/

DEMO

範例程式—UDP Server public class Server { public static void main(String args[]) throws Exception byte buffer[]=new byte[10]; //buffer是10byte的陣列 String msg; int portNo=5555; //設server port System.out.println("Server端開始接受連線請求!"); //print出的文字訊息 for (;;) { DatagramPacket packet = new DatagramPacket(buffer,buffer.length); //建立Datagram packet資料封包,限制packet值和長度大小 DatagramSocket socket=new DatagramSocket(portNo); //建立socket 需要設server port socket.receive(packet); //接收封包 msg=new String(buffer,0,packet.getLength()); //將訊息轉為字串 System.out.println("收到下面的訊息 : " + msg); //print出的文字訊息 socket.close(); //關閉socket

範例程式—UDP Client public static void main(String args[]) throws Exception { int portNo =5555; //設server port System.out.print("Please input the IP address of destination :"); //print出的文字訊息 BufferedReader uip= new BufferedReader(new InputStreamReader(System.in)); //輸入到buffer的字串存到UIP中,並讀出UIP中buffer的內容 String ServerIP=uip.readLine(); //將UIP內容讀到ServerIP InetAddress addr=InetAddress.getByName(ServerIP); //抓出ServerIP位址 while (true) { // 一直回傳新訊息 System.out.print("輸入送出的訊息 :"); String msg=uip.readLine(); //讀UIP中的訊息 int oLength=msg.length(); //將訊息長度大小放到oLength byte buffer[]=new byte[oLength]; buffer=msg.getBytes(); //使用平臺的預設字元集將此 String 編碼為 byte 序列,並將結果存儲 到一個新的 byte 陣列中。 DatagramPacket packet= new DatagramPacket(buffer,oLength,addr,portNo); //訊息封包(值,大小, server位址, server port) DatagramSocket socket=new DatagramSocket(); //建立socket socket.send(packet); //送出packet封包訊息 socket.close(); //關閉socket

範例程式—執行結果 UDP Server UDP Client

注意事項 Port Number只要在DatagramPacket 中設定固定的即可 每個節點執行相同的程式碼 IP DatagramSocket不用再設定 如程式碼範例 每個節點執行相同的程式碼 此程式碼同時具有Server和Client的功能 Server:需要不斷判斷是否要接收其他節點所傳送的資訊 Client:此節點若有需要更新資料時,傳送給其他節點 可用Thread(執行緒)來撰寫 IP 每個IP同時皆為真實IP 或 同時皆為同一內部網路(LAN)中私有IP,避免無法互相連接