Network programming Asst. Prof. Dr. Choopan Rattanapoka

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
และเครือข่ายคอมพิวเตอร์
Advertisements

The InetAddress Class.
Introduction to C Introduction to C.
โครงสร้างโปรแกรมภาษา C
บทที่ 2 แบบจำลอง OSI OSI Model.
Software คือ ชุดคำสั่งหรือ ขั้นตอนการทำงานของคอมพิวเตอร์
บทที่ 12 การจดทะเบียนชื่อโดเมน (Domain Name Registration)
โครงสร้างภาษาซี.
HTTP Client-Server.
ครั้งที่ 7 Composition.
การสื่อสารทางไกลและเครือข่าย (Telecommunication And Networks)
ARP (Address Resolution Protocol)
Data Transferring.
ระบบเครือข่ายคอมพิวเตอร์
Firewall IPTABLES.
Selected Topics in IT (Java)
Transport Layer.
File Transfer (FTP), WWW, HTTP, DHCP.
Network Layer Protocal:
Introduction TO Network Programming
Network programming Asst. Prof. Dr. Choopan Rattanapoka
Network programming Asst. Prof. Dr. Choopan Rattanapoka
Network programming Asst. Prof. Dr. Choopan Rattanapoka
Network programming Asst. Prof. Dr. Choopan Rattanapoka
โดย อ.ปริญญา น้อยดอนไพร V
การสร้างระบบการป้องกันการบุกรุกโดยใช้ Open Source Software
จัดทำโดย จัดทำโดย นางสาวชุติมา ก้องศิริวงศ์ รหัส นางสาวฏรินทร คงมณี รหัส
คลาสและวัตถุ (4) (Class & Object)
บทที่ 4 Method (1).
TCP/IP.
What’s P2P.
IRC - Internet Relay Chat
CPU ไม่รวม I/O PROCESSOR , MATH CO-PROCESSOR
Page: 1 การโปรแกรมเชิงวัตถุด้วยภาษา JAVA บุรินทร์ รุจจนพันธุ์.. ปรับปรุง 15 มิถุนายน 2550 Structure Programming มหาวิทยาลัยเนชั่น.
บทที่ 2 แบบจำลอง OSI OSI Model.
ทำงานกับ File และStream
CSC431 Computer Network System
ภาพรวมระบบเครือข่าย
Method of Class อ.สุพจน์ สิงหัษฐิต
Bupa active : Member log in. ในหน้าแรก ระบบจะแสดงแถบต่าง ๆ ที่ เกี่ยวข้องกับข้อมูลของท่านโดยสามารถ เลือกตรวจสอบข้อมูลได้ตามต้องการ ทั้งนี้ ในตัวอย่างเราจะเลือก.
CH 9 หมายเลขไอพี และการจัดสรร
Object-Oriented Programming
TCP Protocol.
Java Programming Java Structure and Datatype,Variable
HTTP (Hyper Text Transfer Protocol )
อินเตอร์เน็ตเบื้องต้น
Java Network Programming 1
ISP ในประเทศไทย
Domain Name System   (DNS).
NETWORK SERVICE NTP + SQUID
Data Storage Management (LVM)
Virtualization and CentOS Installation
รูปร่างของเครือข่ายคอมพิวเตอร์
คำศัพท์ระบบอินเตอร์เน็ต
การจัดการกับความผิดปกติ
บทที่ 8 เครือข่ายอินเตอร์เน็ต
Application Layer.
1. บทนำเกี่ยวกับอินเทอร์เน็ต อินเทอร์เน็ตมีจุดเริ่มต้นมาจากเหตุผล ทางการทหาร เนื่องจากในยุค สงครามเย็น เมื่อประมาณ พ. ศ 2510 ระหว่างฝ่ายคอมมิวนิสต์ และฝ่ายเสรี
chapter 2 - Construction and destruction - Overloading method
OSI Model Open System Interconnection. Open Systems Interconnection (OSI) จัดตั้งและกำหนดโดย องค์การกำหนดมาตรฐานสากล หรือ ISO ( International Standards.
Network programming Asst. Prof. Dr. Choopan Rattanapoka
สำนักวิชาเทคโนโลยีสารสนเทศและการสื่อสาร มหาวิทยาลัยนเรศวร พะเยา
Mr. Winai Purikasem. Introduction  Hypertext model  Use of hypertext in World Wide Web (WWW)  WWW client-server model  Use of TCP/IP protocols in.
– Network operating systems and Protocols Choopan Rattanapoka.
Java Network Programming – Network Operating Systems and Protocols Choopan Rattanapoka.
C# Communication us/library/system.net.sockets.tcplistener(v=vs. 110).aspx 1.
Network programming Asst. Prof. Dr. Choopan Rattanapoka
TCP/IP Protocol นำเสนอโดย นส.จารุณี จีนชาวนา
เครือข่ายคอมพิวเตอร์
Network programming Asst. Prof. Dr. Choopan Rattanapoka
ใบสำเนางานนำเสนอ:

357335 - Network programming Asst. Prof. Dr. Choopan Rattanapoka Java Datagram 357335 - Network programming Asst. Prof. Dr. Choopan Rattanapoka

UDP (User Datagram Protocol) นอกจากการสื่อสารระหว่างเครื่องคอมพิวเตอร์ในเครือข่ายด้วย TCP แล้ว ยังมีอีก protocol ที่ใช้กันคือ UDP UDP จะมี header ที่เล็กกว่า TCP ทำให้ส่งข้อมูลขนาดเล็กได้เร็วกว่า แต่ UDP จะไม่มีการสถาปณาการเชื่อมต่อ และ ไม่รับประกันข้อมูลซึ่ง ข้อมูลที่ถูกส่งอาจจะสูญหายระหว่างทางได้ การส่งข้อมูลผ่าน TCP จะรับประกันการรับข้อมูลตามลำดับ (seq number + ack number) ในการส่ง ในขณะที่ UDP ไม่รับประกัน การรับข้อมูลตามลำดับ

ทำไมถึงยังมีการใช้ UDP ทำไมถึงมี network application ที่ใช้ UDP ซึ่งไม่มีการรับประกันข้อมูลที่ อาจจะสูญหายระหว่างทาง UDP ไม่เหมาะอย่างยิ่งกับงานที่ต้องการความถูกต้องของข้อมูล เช่น FTP(File Transfer Protocol) แต่ UDP เหมาะกับงานที่ต้องการความเร็วในการรับส่งข้อมูล โดยจำเป็นต้อง ได้รับข้อมูลที่ถูกต้อง Real-time audio, video NTP (Network Time Protocol)  ถ้าไม่ได้เวลาที่จะมา synchronize ก็ไม่เป็นไรมาก DNS  ถ้า resolve IP ไม่ได้ก็ติดต่อใหม่ได้ การจัดการกับลำดับข้อมูลที่ต้องการรับสามารถจัดการในชั้นของ application ได้

UDP ใน Java การใช้งาน UDP ใน java จะแบ่งออกเป็น 2 classes สรุปก็คือ DatagramPacket เป็น class ที่ใช้เพื่อ ใส่ข้อมูลที่ต้องการจะส่ง และ ดึงข้อมูลที่ต้องการจะรับ DatagramSocket เป็น class ที่ใช้เพื่อ ส่งและรับ ข้อมูลของ UDP สรุปก็คือ การส่งข้อมูล บรรจุข้อมูลลงใน DatagramPacket และใช้ DatagramSocket เป็นตัวส่ง DatagramPacket ที่มีข้อมูล ไปยังเครื่อง ปลายทาง การรับข้อมูล อ่านข้อมูล DatagramPacket จาก DatagramSocket และ ดึงข้อมูลออกจาก DatagramPacket ที่ได้รับ

ข้อแตกต่างระหว่าง UDP และ TCP ใน Java ข้อ 1 TCP จะมี class : Socket และ ServerSocket UDP จะไม่มี ServerSocket เนื่องจากจะใช้ DatagramSocket ทำงาน เหมือน Socket และ ServerSocket ในตัว ข้อ 2 TCP มี InputStream + OutputStream (Streaming) UDP ไม่มี InputStream + OutputStream จะจัดการข้อมูลในแต่ละ DatagramPacket ข้อ 3 TCP จะติดต่อกันเป็นคู่ Client+Server เมื่อเปิด Socket UDP สามารถจะทำงานระหว่าง host ไหนก็ได้เนื่องจากไม่มีการสถาปณาการ เชื่อมต่อ

ขนาดของข้อมูลที่ส่งผ่าน UDP Source port Destination port Length Checksum Data 15 16 31 ถ้าดูที่ UDP header จะเห็นว่า Length ใน header มีขนาด 16 บิต ความยาวนี้คือความยาวทั้ง datagram ซึ่งหมายความว่า Data + UDP header แล้ว จะ มีขนาดมากสุดคือ 65536 ดังนั้น UDP header มีขนาด 64 บิต ทำให้ ข้อมูลที่ UDP จะส่งได้จริงต่อ datagram จะต้องไม่เกิน 65742 บิต (ประมาณ 8 kB) แต่อย่างไรก็ตาม UDP จะทำงานผ่าน IP ซึ่งมีการกำจัดขนาดของข้อมูลแค่ 65536 บิต รวม IP header ด้วย ดังนั้นพยายามอย่าให้ ข้อมูลที่ส่งผ่าน UDP เกิน 8kB แต่ในการใช้งานส่วนใหญ่ application จะพยายามกันไม่รับ UDP datagram ที่มีขนาด ใหญ่กว่า 576 bytes รวม data + UDP header

Class : DatagramPacket DatagramPacket มี contructor ที่สำคัญแบ่งออกเป็น 2 ส่วนคือ Contructor สำหรับรับข้อมูล public DatagramPacket(byte[] buffer, int length) public DatagramPacket(byte[] buffer, int offset, int length) Contructor สำหรับส่งข้อมูล public DatagramPacket(byte[] data, int length, Inetaddress destination, int port) Public DatagramPacket(byte[] data, int offset, int length, Inetaddress destination, int port)

Get Method ใน Class DatagramPacket public InetAddress getAddress() ดึงค่า InetAddress ที่เป็นเครื่องปลายทาง public int getPort() ดึงค่าหมายเลข port ของเครื่องปลายทาง public int getLength() คืนจำนวน byte ของข้อมูลใน datagram public int getOffset() คืนค่า offset ที่เป็นจุดเริ่มต้นของข้อมูล public byte[] getData() ดึงข้อมูลออกจาก datagrampacket ปกติแล้วควรจะแปลงข้อมูลให้อยู่ในรูปที่นำไปใช้ได้เลย เช่น (กำหนด dp เป็น object ของ DatagramPacket) String s = new String(dp.getData(), “ASCII”); InputStream in = new ByteArrayInputStream(dp.getData(), dp.getOffset(), dp.getLength());

ตัวอย่าง 1

Set Method ใน Class DatagramPacket ปกติการสร้าง DatagramPacket ด้วย constructor เพียงพออยู่ แล้ว ยกเว้นในกรณีที่ต้องการแก้ไขค่าโดยไม่สร้าง object ใหม่เพื่อ ความเร็วในการใช้งาน มีเมธอดสำคัญอยู่ 4 เมธอด public void setData(byte[] data) public void setData(byte[] data, int offset, int length) สำหรับต้องการเปลี่ยนค่า data ที่ต้องการจะส่ง public void setAddress(InetAddress remote) public void setPort(int port) public void setLength(int length)

Class : DatagramSocket Socket ใน datagram จะถูกผูกอยู่กับ port ซึ่งจะใช้ทั้งรับและส่ง ข้อมูล ในกรณีที่เขียน client ไม่จำเป็นจะต้องระบุ port สามารถปล่อยให้ระบบหา port ที่ว่างให้เอง (anonymous port) ในกรณีของ Server จะต้องกำหนด port เพื่อให้ Client สามารถติดต่อเข้า มาได้ ดังนั้นเมื่อต้องการเขียนโปรแกรมที่เป็น Server จะต้องเลือกใช้ constructor ที่สามารถระบุหมายเลข port ได้

Constructor : DatagramSocket ใน DatagramSocket มี constructor อยู่ 3 แบบ ซึ่งจะถูกเรียกใช้ใน เหตุการณ์ที่ต่างกัน เปิด socket แบบ anonymous port public DatagramSocket() throws SocketException เปิด socket บน port ที่เจาะจงไว้บนทุก network interface public DatagramSocket(int port) throws SocketException เปิด socket บน port ที่เจาะจงไว้บน network interface ที่เจาะจง public DatagramSocket(int port, InetAddress address) throws SocketException Port ที่กล่าวถึงคือ local port หรือเครื่องตัวเอง เตือน : remote IP, remote port จะตั้งค่าใน DatagramPacket

การส่งและรับข้อมูล datagram เป้าหมายหลักของ DatagramSocket คือ การส่งและรับข้อมูล public void send(DatagramPacket dp) ใช้สำหรับส่งข้อมูล datagram ไปยังเครื่องปลายทาง public void receive(DatagramPacket dp) ใช้สำหรับรับข้อมูล datagram จากเครื่องปลายทาง การรอข้อมูลจะ block ที่คำสั่งนี้จนกว่าจะได้รับข้อมูล public void close() ใช้สำหรับคืน port ที่ใช้งาน public int getLocalPort() คืนค่าหมายเลข port ซึ่งทำให้รู้ว่าระบบจัดสรร port หมายเลขอะไรมาให้เรา

Example : Echo Server/ Echo Client

Example : EchoClient

Example : EchoServer

Class : Date ในภาษา Java สามารถดึงเวลาของเครื่องคอมพิวเตอร์ออกมาได้ โดยใช้ Class ที่ชื่อว่า Date Date มี constructor หลายแบบแต่ถ้าต้องการเวลาปัจจุบันสามารถใช้ constructor ที่ง่ายที่สุดคือ public Date( ) Date now = new Date(); เมธอดใน Class Date สามารถดึงค่า วัน เดือน ปี ชั่วโมง นาที ได้ แต่ถ้า ต้องการทั้งหมด สามารถใช้เมธอด toString(); String date = now.toString();

ตัวอย่าง