หน้าแรกส่วนบริการลูกค้าข่าวประกาศคลังความรู้ติดตามความคืบหน้าดาวน์โหลด

คลังความรู้
คุณอยู่ที่หน้า: หน้าแรก > คลังความรู้ > How To > UDP: User Datagram Protocol

UDP: User Datagram Protocol

UDP: User Datagram Protocol

 

 

User Datagram Protocol (UDP) เป็นวิธีการสื่อสารหรือโปรโตคอลที่จำกัดจำนวนการบริการ เมื่อข่าวสารมีการแลกเปลี่ยน ระหว่างคอมพิวเตอร์ในเครือข่ายที่ใช้ Internet Protocol (IP) โดย UDP เป็นตัวเลือกหนึ่งของ Transmission Control Protocol (TCP) และใช้ร่วมกับ IP บางครั้งเรียกว่า UDP/IP ซึ่ง UDP เหมือนกับ TCP ในการใช้ IP ในการดึงหน่วยข้อมูล (เรียกว่า datagram) จากคอมพิวเตอร์หนึ่งไปยังอีกเครื่องหนึ่ง

 

แต่ต่างจาก TCP โดย UDP ไม่ให้การบริการสำหรับการแบ่งข่าวสารเป็นแพ็คเกต (datagram) และประกอบขึ้นใหม่เมื่อถึงปลายหนึ่ง UDP ไม่ให้ชุดของแพ็คเกตที่ข้อมูลมาถึง หมายความว่า โปรแกรมประยุกต์ที่ใช้ UDP ต้องมีความสามารถในการสร้างมั่นใจว่าข่าวสารที่มาถึงอยู่ในลำดับที่ถูกต้อง การประยุกต์เครือข่ายที่ต้องการประหยัดเวลาในการประมวลผล เพราะมีหน่วยข้อมูลในการแลกเปลี่ยน (ดังนั้น จึงมีข่าวสารน้อยมากในการประกอบขึ้นใหม่) จะชอบ UDP มากกว่า TCP ซึ่ง Trivial File Transfer Protocol (TFTP) ใช้ UDP แทนที่ TCP

 

          UDP ให้ 2 บริการที่ไม่มีใน TCP โดยเลเยอร์ของ IP คือ Port number เพื่อช่วยแยกแยะการขอของผู้ใช้ และความสามารถ checksum เพื่อตรวจสอบการมาถึงข้อมูล ในแบบจำลองการสื่อสาร Open System Interconnection (OSI) UDP เหมือนกับ TCP คือ อยู่ที่เลเยอร์ 4 Transport Layer

 

 

 

 

 

 

 

 

 

ตัวอย่างโปรแกรมที่ใช้ UDP

UDP เป็นการส่งข้อมูลที่ไม่มีการยืนยันการรับส่งข้อมูล คือผู้ส่งไม่สามารถรู้ได้ว่าข้อมูลได้ถึงผู้รับแล้วหรือไม่ มาถึงตรงนี้ คงเกิดคำถามขึ้นมากันบ้างแล้วนะครับ UDP มันมีข้อเสียอย่างนี้ แล้วจะใช้ได้เร้อ.... ผมต้องบอกเลย ว่าได้ฮะ ใช้ได้แน่ๆ แต่เราจะต้องเขียนการตรวจสอบข้อมูลเอาเอง เช่น ถ้าผมส่งข้อมูลไป ถ้าฝั่งที่รับข้อมูลได้รับข้อมูลแล้ว ก็ให้ตอบกลับมาให้ผม ผมก็ทราบแล้วว่าข้อมูลไปถึง แต่ถ้าไม่มีการตอบกลับภายในระยะเวลาที่ผมกำหนด ก็ให้แจ้งว่าผู้รับไม่ได้รับข้อความ

ข้อดีของ UDP ที่เห็นกันได้ชัดเจนคือ มันจะส่งข้อมูลได้เร็วกว่า แบบ TCP และจะไม่มีการสร้าง Connection เกิดขึ้น ทำให้ข้อมูลที่วิ่งในเครือข่ายมีน้อยลงด้วย

อ๊ะ เกริ่นมาพอสมควรกันแล้วนะครับ งานนี้มาเริ่มสร้างโปรแกรม Client / Server เพื่อแสดงการรับส่งข้อมูลโดยใช้ UDP กันเลยครับ

1. เปิดโปรแกรม Microsoft Visual Basic ทำการเลือกสร้างโปรเจ็คแบบ Standard EXE

2. ทำการเพิ่ม คอนโทรล MS Winsock เข้ามาในโปรเจ็ค โดยเลือกที่ Project->Components แล้วทำการคลิกเลือก Microsoft Winsock 6.0 ดังรูป

 

 

 

 

 

3.ทำการเลือกคอลโทรลต่างๆ แล้ววางตำแหน่งดังรูป

 

4.ทำการหนด Property ต่างๆ ดังนี้

Name

Property

Value

Text1

Text

[ว่าง]

Text1

Multiline

True

Text2

Text

[ว่าง]

Text2

Multiline

True

Text3

Text

[ว่าง]

Command1

Caption

Send

Winsock1

Protocol

1-sckUDPProtocol

Winsock2

Protocol

1-sckUDPProtocol

 

 

 

 

 

5. ทำการคัดลอกโค้ดนำไปใส่ในส่วน View Code

Private Sub Command1_Click()

 If Text3.Text <> "" Then

  Winsock2.RemoteHost = Winsock2.LocalIP

  Winsock2.RemotePort = 6543

  Winsock2.SendData Text3.Text

  Text3.Text = ""

 End If

End Sub

 

Private Sub Form_Load()

 Winsock1.Bind 6543, Winsock1.LocalIP

End Sub

 

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)

Dim str As String

 Winsock1.GetData str

 Text1.Text = Text1.Text & str & Chr(13) & Chr(10)

 

 'send message to Client

 Winsock1.SendData "[received]" & Time

 

End Sub

 

Private Sub Winsock2_DataArrival(ByVal bytesTotal As Long)

Dim str As String

 Winsock2.GetData str

 Text2.Text = Text2.Text & str & Chr(13) & Chr(10)

 

End Sub

 

 

 

6. เมื่อเสร็จแล้ว ก็ทดลอง Run โปรแกรมกันเลยครับ ทดลองพิมพ์ข้อความแล้วกด Send ดูนะครับ

 

อธิบายโปรแกรม
โปรแกรมนี้จะทำงานเป็น Server และ Client ในโปรแกรมดียวกัน แต่จะติดต่อส่งข้อมูลระหว่างกันผ่านทาง MS Winsock Control

การทำงานของโปรแกรมจะเริ่มจากส่วนของ Winsock1 ที่ทำหน้าที่เป็น Server ทำการ Bind เพื่อรอคอยรับข้อมูลจากผู้ส่ง ตรงหมายเลขพอร์ท 6543 และ หมายเลข IP ของเครื่อง Server (Winsock1.LocalIP) และ เมื่อ Server ได้รับข้อมูลที่ส่งมา คือจะเกิด Event Winsock1_DataArrival ขึ้น ผมก็จะรับข้อมูลที่ส่งมาโดยใช้ Methode GetData ของ Winsock เพื่อนำข้อมูลขึ้นมาแสดงที่คอนโทรล Text1

ส่วนการทำงานของฝั่ง Client จะทำการกำหนดชื่อ Host และ หมายเลขพอร์ท ที่เป็นปลายทาง แล้วทำการส่งข้อมูลที่อยู่ในคอนโทรล Text3 ออกไป ตอนนี้ผมอยากให้สังเกตุที่คำสั่งในการกำหนด Host ปลายทาง คือ

Winsock2.RemoteHost = Winsock2.LocalIP

จะเห็นได้ว่าผมกำหนดให้ Winsock2 ทำการส่งข้อมูลที่ LocalIP (ก็คือ ip ของเครื่องตัวเอง) เพื่อเป็นการแสดงบนเครื่องๆนี้ เท่านั้น ***หากต้องการส่งไปยังเครื่องอื่น ที่ Run โปรแกรมนี้เช่นกัน แค่เพียงเปลี่ยนจาก Winsock2LocalIP ไปเป็น หมายเลข IP ของเครื่องที่ต้องการติดต่อ ก็ส่งข้อมูลได้แล้วครับ

 

ปิดท้าย

จะเห็นได้ว่าโปรแกรมตัวอย่างผมจะแสดงไว้ในหน้าต่างเดียวกันเลย ก็เพื่อลดขั้นตอนในการอธิบายลงครับ เอาเฉพาะแนวทาง ที่คุณจำเป็นจะต้องต่อยอด ด้วยตัวเองครับ หวังว่าตัวอย่างโปรแกรมที่ผมได้นำมาเสนอครั้งนี้ อาจจุดประกาย การสร้างสรรค์โปรแกรม ในตัวคุณขึ้นมาบ้างนะครับ แล้วพบกันใหม่ กับ 9'M :-P

 

 

 

 



บทความนี้มีประโยชน์กับคุณหรือไม่ ?

บันทึกสู่รายการโปรดของฉัน
พิมพ์หัวข้อนี้

การเข้าหัว RJ-45 (ดูรายละเอียด: 749)
เตือนภัย Trojan Iframe เปิดด้วย FireFox ก็ติด (ดูรายละเอียด: 1016)
วิธีการเซ็ตค่า Outlook Express (ดูรายละเอียด: 849)
วิธีการใช้ Direct Admin Control Panel (Hosting Manage) (ดูรายละเอียด: 1778)
สาเหตุว่าด้วยทำไม Filezilla ถึงไม่เข้ารหัสตัวไฟล์เก็บรหัส และวิธีแก้ไข (ดูรายละเอียด: 817)

Powered by WHMCompleteSolution


ภาษา:

LiveZilla Live Help