สวัสดีกันอีกครั้งอีกหน สำหรับบทความที่เกี่ยวกับ
Visual Basic สำหรับแฟนๆ VB ก็คงพอจะจำกันได้ กับบทความในครั้งที่แล้ว ที่เกี่ยวข้องกับ
MS Winsock Control กลับมาครั้งนี้ ก็เป็นอีกครั้งนะครับสำหรับบทความแนวเดิม
เพราะโดนเขียน e-mail ขอกันมาแยะ พอสมควร แต่ก็คงไม่อาจเขียนให้ออกมาเป็นโปรแกรมซะทีเดียวเลยอย่างที่ต้องการ
คงได้ประมาณแนวทาง และวิธีการเท่านั้นหละครับ นอกจากนี้คุณจำเป็นจะต้องต่อยอด(ความรู้)
ศึกษาเพิ่มเติมเอากันเองนะครับ
การ Broadcast เป็นวิธีการที่ใช้กันมากบนระบบ
Lan (Local area networks) ซึ่งถ้าคุณต้องการที่จะส่งข้อมูล ถึงเครื่องทุกๆ
เครื่องที่อยู่บนระบบเดียวกัน คุณก็สามารถที่จะใช้วิธี Broadcast ข้อมูลไปได้
พูดให้ง่ายๆ Broadcast ก็คือ การส่งข้อมูล แบบกระจาย ไปสู่เครื่องทุกเครื่อง
ซึ่งจะเห็นได้ว่ามันมีประโยชน์มาก
ยกตัวอย่างเช่น ถ้าคุณต้องการค้นหาไฟล์อะไรสักอย่างที่อยู่บนเครื่องใดเครื่องนึง
หรือ ทุกเครื่อง ที่อยู่บนระบบ Network คุณก็สามารถใช้วิธีการ Broadcast
ส่งข้อมูลที่ระบุชื่อไฟล์ไป หากเครื่องใดที่ได้รับ และมีไฟล์ที่ระบุมากับข้อมูล
เครื่องนั้นจะ ทำการตอบกลับมายังคุณ (ทั้งหมดนี้ที่กล่าว คุณจำเป็นจะต้องเขียนเป็นโปรแกรมขึ้นมาเองนะครับ)
วิธีการส่ง Broadcast สามารถทำได้เพียงแค่คุณใช้
UDP Protocol (การส่งข้อมูล แบบไม่มีการยืนยันการติดต่อ) แล้วทำการส่ง Package
(ข้อมูล) ไปยัง IP หมายเลข 255.255.255.255 และ ทำการเลือกหมายเลขพอร์ตหมายเลขใดๆ
ก็ได้ (ผมอยากแนะนำให้ใช้หมายเลขพอร์ต ตั้งแต่ 1024 ขึ้นมา นะครับ จนถึง
65535 , ส่วนหมายเลขก่อนหน้านี้ เค้าสงวนไว้สำหรับ Protocol ต่างๆ ที่เป็นมาตรฐาน)
การส่งและรับ UDP Broadcast สามารถทำได้ง่ายโดยที่เราไม่จำเป็น
จะต้องทำการติดต่อกับปลายทางก่อน ทำการส่งข้อมูล ซึ่งจะต่างกับการส่ง แบบ
TCP ที่จะต้องมีการยืนยันตัวตนของทั้งสองเครื่อง ก่อนทำการส่งข้อมูลใดๆ สำหรับขนาดของข้อมูล
ที่สามารถส่งไปได้นั้น จะขึ้นอยู่กับอุปกรณ์ Network ที่คุณต่อใช้อยู่ แต่โดยทั่วไปจะอยู่ที่
256 bytes ต่อการส่งหนึ่งครั้ง
เอาละครับ กล่าวกันมาซะยาวยืด (กลัวว่าจะหลับกันซะก่อน)
ตอนนี้ก็มาถึงช่วงที่จะได้ลองกันแล้ว มาเริ่มกันเลยดีกว่า
1. เปิด VB แล้วสร้างโปรเจค Standard
EXE
2.เลือกเมนู Project->Components
แล้วทำการเลือก Microsoft Winsock Control 6.0 ดังแสดงในรูปด้านล่าง
3. ออกแบบหน้าตาโปรแกรมดังรูป
ทำการกำหนด Property ต่างๆ ของ Control
ดังนี้
Name |
Property |
Value |
Text1 |
Text |
[ว่าง] |
Text1 |
Multiline |
True |
Text2 |
Text |
[ว่าง] |
Command1 |
Caption |
Send |
Winsock1 |
Protocol |
1-sckUDPProtocol |
4. คัดลอกโค้ดต่อไปนี้ ลงไปวางในส่วนของ
Code
Private Sub Form_Load()
Winsock1.Bind 20202
End Sub
Private Sub Form_Unload(Cancel As Integer)
Winsock1.Close
End Sub
Private Sub Command1_Click()
Dim str As String
str = CStr(Text2.Text)
Winsock1.RemoteHost = "255.255.255.255"
Winsock1.RemotePort = 20202
Winsock1.SendData str
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim str As String
Winsock1.GetData str, vbString
Text1.Text = Text1.Text & str & Chr(13) & Chr(10)
End Sub
|
5. คราวนี้ก็มาถึงขั้นตอนของการทดสอบโปรแกรม
เมื่อ Run ดูแล้วจะได้ผลดังรูป แต่ถ้าอยากให้เห็นผลชัดๆ เราจำเป็นจะต้องทำตัวติดตั้งโปรแกรมนี้
ไปลงบนเครื่องอื่นๆ ที่อยู่บน Lan วงเดียวกัน โดยใช้โปรแกรม Package &
Deployment Wizard เพราะว่าเราไม่สามารถนำไฟล์ exe ที่สร้างขึ้นด้วย vb ไปใช้บนเครื่องที่ปราศจาก
vb Runtime และโดยเฉพาะตัวอย่างนี้ ได้ใช้ MS Winsock Control ซึ่งจะเป็นจะต้องลงไปบนเครื่องที่ต้องการ
run โปรแกรมด้วยครับ หากได้ทดสอบแล้วจะเห็นว่า เครื่องทุกเครื่องที่ลงโปรแกรมจะสามารถรับข้อความที่ส่งแบบกระจายภายในเครือข่าย
ปิดท้าย
สำหรับบางท่านที่ Run แล้วไม่เป็นดังรูป
ก็ให้ทำการตรวจสอบ Property ของ Winsock Control ว่าเลือก Protocol เป็น
UDP หรือไม่ ส่วนของ โค้ดก็สั้นนิดเดียวเองนะครับ เอาไปประยุกต์ใช้งานกันเองนะครับ
เช่น ทำเป็นระบบส่งข้อความภายในองค์กร ถ้าสนใจ หรือ จ้างผมเขียนผมก็ยินดีนะฮะ
แล้วพบกันใหม่ กับ 9'M :-P |