annop suwanbumrungsuk - msit.mut.ac.th ระบบควบคุม...บทที่ 5...
TRANSCRIPT
ระบบควบคมคอมพวเตอรผเรยน
Lock Input Device Client and Shutdown Multiclient System
อรรณพ สวรรณบ ารงสข
Annop Suwanbumrungsuk
สารนพนธฉบบนเปนสวนหนงของการศกษา
หลกสตรวทยาศาตรมหาบณฑต สาขาวชาเทคโนโลยสารสนเทศ
คณะวทยาการและเทคโนโลยสารสนเทศ
มหาวทยาลยเทคโนโลยมหานคร
ปการศกษา 2555
I
หวขอโครงงาน ระบบควบคมคอมพวเตอรผเรยน
นกศกษา นายอรรณพ สวรรณบ ารงสข
รหสนกศกษา 5317680008
หลกสตร วทยาศาสตรมหาบณฑต สาขาเทคโนโลยสารสนเทศ
ปการศกษา 2555
อาจารยผควบคมโครงงาน ดร.วรพล ลลาเกยรตสกล
บทคดยอ
ระบบควบคมคอมพวเตอรผเรยน เปนการน าเสนอวธในการควบคมคอมพวเตอรของ
ผเรยนไมใหสามารถใชงานคอมพวเตอรไดในขณะทครผสอนก าลงบรรยาย โดยการปดกน
อปกรณอนพตคอมพวเตอรของผเรยนซงประกอบดวย หนาจอ เมาส และคยบอรดไมให
สามารถใชงานได ซงในโปรแกรมยงประกอบไปดวยฟงกชนการสงขอความ ฟงกชนตรวจสอบ
สถานะเปดเครองคอมพวเตอร และฟงกชนในการสงปดหรอรสตารทเครองคอมพวเตอรของ
ผเรยนไดเมอหมดคาบเรยน ระบบนชวยอ านวยความสะดวกในการควบคมไมใหนกเรยนแอบ
เลนเกมหรอเขาเวบไซตในขณะทครผสอนก าลงบรรยาย อกทงเมอเลกใชงานหองปฏบตการ
คอมพวเตอรแลวกสามารถสงค าสงปดเครองคอมพวเตอรของผเรยนไดทงหองเพอลดปญหา
นกเรยนใชงานคอมพวเตอรแลวไมปดเครอง
II
กตตกรรมประกาศ
สารนพนธโครงงานนส าเรจลลวงไดดวยความเมตตาของอาจารยทปรกษาโครงงาน ดร.วรพล ลลาเกยรตสกล ซงไดใหค าแนะน าและขอคดเหนตางๆ มาโดยตลอด รวมถงอาจารยทกๆ ทานของคณะวทยาการและเทคโนโลยสารสนเทศ มหาวทยาลยเทคโนโลยมหานคร ทไดถายทอดความร ประสทธประสาทวชา อกทงชวยเหลอสนบสนนและยนดใหค าปรกษารวมถงเพอนนกศกษาสาขาวชาการบรหารจดการเครอขายและระบบทชวยเหลอใหความรในเรองทขาพเจาไมเคยทราบมากอน ขาพเจาจงขอขอบพระคณอาจารย และขอบคณผทไดใหความชวยเหลอมา ณ โอกาสน
อรรณพ สวรรณบ ารงสข
ตลาคม 2555
III
สารบญ
หนา
บทคดยอภาษาไทย I
กตตกรรมประกาศ II
สารบญ III
สารบญรป V
สารบญตาราง VIII
บทท 1 บทน า
1.1 ปญหาและแรงจงใจ 1
1.2 แนวทางการแกปญหา 1
1.3 วตถประสงค 2
1.4 ภาพรวมของระบบ 2
1.5 ขอบเขตของโครงงาน 3
1.6 โครงสรางของสารนพนธ 3
บทท 2 ทฤษฎทเกยวของ
2.1 ระบบเครอขายแลน ( LAN : Local area network) 4
2.2 ความรท วไปเกยวกบเครอขาย 4
2.3 โพรโทคอล(Protocol) 9
2.4 โพรโทคอลทซพ 11
2.5 พอรต(Port) 14
2.6 ซอกเกต 15
2.7 การโปรแกรมซอกเกต( Socket Programming) 20
IV
สารบญ ( ตอ )
หนา
2.8 คลาสทจ าเปนในการเขยนโปรแกรมทางเนตเวรคดวย C# 20
2.9 คลาส ซอกเกต 24
2.10 การใชงานคลาสชวยเหลอ 27
2.11 Windows Event Programing 29
2.12 Using Events and Delegates 30
2.13 The AsyncCallback Class 32
2.14 Using Asynchronous Sockets 33
บทท 3 การออกแบบ
3.1 คณสมบตทตองการใหโปรแกรมมและแนวคดในการพฒนา 38
3.2 โครงสรางโดยรวมของโครงงานโปรแกรมควบคมคอมพวเตอรผเรยน 40
3.3 ขนตอนการท างานทางดานเครอขาย 41
3.4 ออกแบบหนาตาของโปรแกรมควบคมคอมพวเตอรผเรยน 47
บทท 4 ผลการทดลอง
4.1 สภาพแวดลอมทใชส าหรบการทดลอง 48
4.2 วธและผลการทดลอง 49
4.3 สรปผลการทดลอง 56
บทท 5 สรปผลโครงงาน
5.1 ขอสรปผลการด าเนนงาน 57
5.2 ปญหาและอปสรรคการด าเนนงาน 57
5.3 แนวทางในการพฒนาตอ 57
V
สารบญ ( ตอ )
หนา
เอกสารอางอง 58
ภาคผนวก 59
ภาคผนวก ก วธตดตงโปรแกรมควบคมคอมพวเตอรผเรยน 59
ภาคผนวก ข คมอการใชงานโปรแกรมควบคมคอมพวเตอรผเรยน 63
VI
สารบญรป
ชอรป หนา
รปท 1.1 ภาพการท างานโดยรวมของระบบควบคมคอมพวเตอรผเรยน 2
รปท 2.1 ระบบเครอขายทองถน 4
รปท 2.2 การแจกไอพแอดเดรสแบบชวคราว 5
รปท 2.3 เปรยบเทยบโพรโทคอลแบบอางองโอเอสไอและ โพรโทคอลทซพ ไอพ 10
รปท 2.4 การแลกเปลยนของเซกเมนตของโพรโทคอลทซพ 11
รปท 2.5 ลกษณะการสงขอมลของโพรโตคอลทซพ 13
รปท 2.6 ลกษณะการสงขอมลของโพรโตคอลทซพทผเขยนตองจกการแยกขอมลเอง 13
รปท 2.7 Diagram ขนตอนการสราง Passive Sockets 19
รปท 2.8 Diagram ขนตอนการสราง Active Sockets 19
รปท 2.9 window event program 30
รปท 2.10 demonstrates 31
รปท 2.11 รปแบบการใชงานเมธทอด BeginAccept() 33
รปท 2.12 รปแบบการใชงานเมธทอด EndAccept() 34
รปท 2.13 รปแบบการใชงานเมธทอด BeginConnect() 35
รปท 2.14 รปแบบการใชงานเมธทอด EndConnect 36
รปท 2.15 รปแบบการใชงานเมธทอด EndSend() 37
รปท 2.16 รปแบบการใชงานเมธทอด EndReceive() 37
รปท 3.1 แสดงฟงกชนหลกทโปรแกรมควบคมคอมพวเตอรผเรยนตองม 38
รปท 3.2 แนวคดในการเชอมตอโดยใช Asynchronous 39
VII
สารบญรป ( ตอ )
ชอรป หนา
รปท 3.3 แสดงโครงสรางโดยรวมของระบบ 40
รปท 3.4 แสดงขนตอนการท างานทางดานเครอขายของฟงกชนสงขอความ 41
รปท 3.5 แสดงขนตอนการท างานทางดานเครอขายของฟงกชนลอกอปกรณอนพตผเรยน 42
รปท 3.6 แสดงขนตอนการท างานทางดานเครอขายของฟงกชนปลดลอกอปกรณอนพต 43
รปท 3.7 แสดงขนตอนการท างานทางดานเครอขายของฟงกชนปดเครองผเรยน 44
รปท 3.8 แสดงขนตอนการท างานทางดานเครอขายของฟงกชนปดเครองผเรยน 45
รปท 3.9 แสดงขนตอนการท างานทางดานเครอขายของฟงกชนรสตารทเครองผเรยน 46
รปท 3.10 หนาตาโปรแกรมควบคมผเรยนฝงแมขาย 47
รปท 3.11 หนาตาโปรแกรมควบคมผเรยนฝงลกขาย 48
รปท 4.1 แสดงภาพรวมของหองปฏบตการคอมพวเตอร 48
รปท 4.2 แสดงการเรมโปรแกรมของเครองแมขาย 49
รปท 4.3 แสดงการนบจ านวนเครองลกขายทเขามาเชอมตอ 49
รปท 4.4 แสดงขอความ Welcome ทโปรแกรมเครองผเรยน 50
รปท 4.5 โปรแกรมเครองผเรยนไมสามารถเชอมตอกบเครองควบคมได 50
รปท 4.6 แสดง กระบวนการเกด 3 way handshake ท Port 5000 51
รปท 4.7 แสดงฟงกชนการขอความไปใหกบเครองผเรยน 51
รปท 4.8 แสดงขอความทเกดขนทชอง Teacher message 52
รปท 4.9 แสดงขอความทเครองลกขายไดรบ 52
VIII
สารบญรป ( ตอ )
ชอรป หนา
รปท 4.10 แสดงการทดสอบฟงกชนการปดอปกรณอนพตเครองผเรยน 53
รปท 4.11 แสดงผลทเกดกบเครองลกขายเมอใชฟงกชนลอกอปกรณอนพตเครองผเรยน 53
รปท 4.12 แสดงการใชงานฟงกชนปลดลอกอปกรณอนพตเครองผเรยน 54
รปท 4.13 แสดงการใชงานฟงกชนปดเครองผเรยน 54
รปท 4.14 แสดงการใชงานฟงกชนปดเครองผเรยน 55
รปท 4.15 แสดงฟงกชนการยกเลกการปดเครองผเรยน 55
รปท 4.16 แสดงฟงกชนการรสตารทเครองผเรยน 56
รปท ก.1 หนาจอโปรแกรมควบคมคอมพวเตอรผเรยนฝ งควบคม 60
รปท ก.2 การตดตงโปรแกรมควบคมคอมพวเตอรผเรยนฝ งลกขาย 61
รปท ก.3 หนาจอโปรแกรมควบคมคอมพวเตอรผเรยนฝ งลกขาย 62
รปท ข.1 เรมสตารทโปรแกรมควบคมคอมพวเตอรผเรยน 64
รปท ข.2 การใชงานฟงกชนสงขอความ 65
รปท ข.3 ขนตอนการใชงานฟงกชนลอคเครองคอมพวเตอรของผเรยน 66
รปท ข.4 ขนตอนการใชงานฟงกชนปลดลอคเครองคอมพวเตอรของผเรยน 66
รปท ข.4 ขนตอนการใชงานฟงกชนปดเครองคอมพวเตอรของผเรยน 66
รปท ข.5 ขนตอนการใชงานฟงกชนยกปดเครองคอมพวเตอรของผเรยน 67
รปท ข.6 ขนตอนการใชงานฟงกชนรสตารทเครองคอมพวเตอรของผเรยน 67
IX
สารบญตาราง
ตารางท หนา
ตารางท 2.1 ไอพแอดเดรสทเปนเลขฐานสองและฐานสบ 6
ตารางท 2.2 ไอพแอดเดรสของแตละคลาส 7
ตารางท 2.3 ตวอยาง เนตเวรคไอดกบ โฮสตไอดของไอพแอดเดรสคลาส A 7
ตารางท 2.4 ตวอยาง เนตเวรคไอดกบ โฮสตไอดของไอพแอดเดรสคลาส B 7
ตารางท 2.5 ตวอยาง เนตเวรคไอดกบ โฮสตไอดของไอพแอดเดรสคลาส C 8
ตารางท 2.6 คาซบเนตมาสค 8
ตารางท 2.7 หมายเลขพอรตของบางแอพพลเคชน 14
ตารางท 2.8ฟงกชนส าคญของคลาส IPAddress 21
ตารางท 2.9 Fields ทส าคญของคลาส IPAddress 21
ตารางท 2.10 Properties ส าคญของคลาส IPHostEntry 22
ตารางท 2.11 ฟงกชนส าคญของคลาส Dns 22
ตารางท 2.12 ฟงกชนส าคญของคลาส Encoding 23
ตารางท 2.13 Properties ทส าคญของคลาส Encoding 24
ตารางท 2.14 ฟงกชนส าคญของคลาส Socket 25
ตารางท 2.15 ฟงกชนส าคญของคลาส TcpClient 27
ตารางท 2.16 ฟงกชนส าคญของคลาส TcpListener 28
ตารางท 2.17 ฟงกชนทส าคญของคลาส NetworkStream 29
ตารางท 2.18 .Net asynchronous Socket methods 32
ตารางท 3.1 แสดงชนดของขอความโพรโทคอลและหนาท 39
1
บทท 1
บทน า
1.1 ปญหาและแรงจงใจ ในปจจบนเทคโนโลยสารสนเทศและการสอสารมความส าคญยงตอการพฒนาประเทศในทกๆดานเนองจากโลกปจจบนกาวเขาสโลกแหงการสอสารไรพรมแดนอยางรวดเรว เกดเปนสงคมสารสนเทศและสงคมเศรษฐกจทอาศยฐานความรหรอปญญาเปนอาวธในการแขงขน นกเรยน นกศกษา ตองไดรบการศกษาซงเปนสงทตองปลกฝงตงแตยงเยาวตองเนนหนกในการทจะใหเยาวชนสามารถใชเทคโนโลยสารสนเทศและการสอสารเปนเครองมอแสวงหาความร และขอมลขาวสารเพอน ามาใชในชวตประจ าวนและการท างานในหนาททรบผดชอบไดอยางถกตองและเหมาะสม ทงนหากกลาวถงเทคโนโลยสารสนเทศ กหนไมพนทจะตองกลาวถงคอมพวเตอร คอมพวเตอรไดเขามามบทบาทอยางมากในชวตประจ าวนทงทบาน และหนวยงานตางๆ ทงของรฐบาล รฐวสาหกจและเอกชน ดวยเหตนการศกษาหาความรดานคอมพวเตอร เพอการใชในชวตประจ าวนจงเปนสงจ าเปน การเรยนการสอนในสถาบนศกษาจงตองมการบรรจรายวชาทางดานคอมพวเตอรเพอใหนกเรยน นกศกษา ไดความรและเกดทกษะทถกตองในการใชงานคอมพวเตอร เนองจากปจจบนผจดท าไดท างานเปนเจาหนาทคอมพวเตอรของโรงเรยนมธยมแหงหนงโรงเรยนแหงนมหองปฏบตการคอมพวเตอรทใชในการเรยนการสอนวชาคอมพวเตอรผจดท าไดสงเกตบรรยากาศของการเรยนในหองปฏบตการคอมพวเตอร วาเมอครเรมสอนจะมนกเรยนบางคนไมสนใจในการเรยน ในชวงทครก าลงบรรยายใหฟง กมกจะใชงานคอมพวเตอรท าอยางอน เชน เขาเวบไซดตางๆ หรอนงเลนเกม ท าใหตวนกเรยนเองไมเขาใจเนอหาทสอน และท างานทไดรบมอบหมายไมเสรจตามเวลาทก าหนด และปญหาอกอยางกคอนกเรยนบางคนเมอใชงานคอมพวเตอรเสรจแลวไมปดเครองคอมพวเตอรท าใหครผสอนตองเสยเวลาในการเดนส ารวจวาเครองคอมพวเตอรเครองไหนยงไมไดปดเครองแลวท าการปดทละเครองจนหมด
1.2 แนวทางการแกปญหา จากปญหาขางตนท าใหผจดท ามแนวคดวาจะท าอยางไรทจะใหครผสอนสามารถควบคม
การใชงานเครองคอมพวเตอรของนกเรยนได โดยสามารถควบคมเครองไมใหนกเรยนสามารถใชงานไดในขณะทครผสอนก าลงบรรยาย เชนเมอครผสอนก าลงบรรยาย ครผสอนตองการใหนกเรยนฟงค าบรรยายกสามารถสงเครองคอมพวเตอรนกเรยนไมใหสามารถใชงานได และเมอครผสอนตองการใหเครองคอมพวเตอรของนกเรยนสามารถกลบมาใชงานไดตามปกตกสามารถท าได โดยการสงค าสงไปทเครองคอมพวเตอรของนกเรยนแลวท าใหเครองของนกเรยนสามารถใชงานไดตามปกต รวมถงสามารถสงขอความไปหาเครองของนกเรยนไดอกทงเมอเลกใชงาน
2
หองปฏบตการคอมพวเตอรแลวกสามารถสงปดเครองของนกเรยนทงหองได เพอลดปญหานกเรยนไมยอมปดเครองหลงใชงานแลว
1.3 วตถประสงค
1.3.1 เพอใชควบคมพฤตกรรมของผเรยนใหมสมาธในการเรยนมาก
1.3.2 เพอความสะดวกในการตรวจสอบวาเครองคอมพวเตอรเครองใดยงไมปดเครอง
1.3.3 เพอลดคาใชจายของสถาบนการศกษาทใชในการซอโปรแกรมควบคมหองเรยน
1.3.4 เพอลดการสงปดเครองคอมพวเตอรแบบผดวธ เชนการตดกระแสไฟฟา เปนตน
1.4 ภาพรวมของระบบ
ระบบโดยรวมจะมเครองทใชในการควบคมหนงเครองซงเปนเครองของครผสอนและเครองลกขายทเปนเครองของนกเรยนมจ านวนสสบเครอง ทกเครองตดตงระบบปฏบตการวนโดวสเอกซพ
Server
Client1
Client2
Client3
Client40
Send Message
Lock Input
Shutdown
Restart
Un Lock Input
Monitor
Process
รปท 1.1 ภาพการท างานโดยรวมของระบบควบคมคอมพวเตอรผเรยน
จากรปท 1.1 ระบบควบคมคอมพวเตอรผเรยนมฟงกชนการท างานตางไดแก ตรวจสอบการเปดเครองของผเรยน(Monitor) การสงขอความถงเครองผเรยน (Send Message) การปดไมใหเครองผเรยนใชอปกรณอนพตได(Lock Input) การเปดใหเครองผเรยนใชอปกรณอนพตไดตามปกต (Un Lock Input) รวมถงการสงปดเครองหรอรสตารทผเรยนได(Shutdown ,Restart)
3
1.5 ขอบเขตของโครงงาน
สงทจ ดท า ในโครงการมดงน ผ จ ดท าตองการพฒนาโปรแกรมทท างานบนระบบปฏบตการวนโดวโดยใชภาษาซชารปในการพฒนาเพอแกปญหาตามขอ 1.1ท าใหครผสอนสามารถควบคมเครองคอมพวเตอรของนกเรยนในหองปฏบตการคอมพวเตอรของสถาบนการศกษาของตนเองไดขอบเขตโครงงานไดแก
1.5.1 โปรแกรมเครองควบคมสามารถทราบไดวาในหองเรยนมเครองคอมพวเตอรของผเรยนเปดอยหรอไม เปนจ านวนกเครอง และสามารถเหนชอเครองพรองทงไอพแอดเดรสของเครองทเปดอยได
1.5.2 โปรแกรมเครองควบคมสามารถสงขอความไปใหเครองผเรยนทงหองได
1.5.3 โปรแกรมเครองควบคมสามารถสงค าสงปดการใชงานอปกรณอนพตเครองผเรยนซงไดแก หนาจอ เมาสกบคยบอรด ไดและเมอตองการใหสามารถกลบมาใชงานไดตามปกตกสามารถท าไดโดยการสงค าสงจากเครองควบคม
1.5.4. โปรแกรมเครองควบคมสามารถสงค าสงปดเครองหรอรสตารทเครองผเรยนได
1.6 โครงสรางของสารนพนธ
1.6.1 บทท 2 ความรพนฐานทเกยวของกบการจดท าโครงงาน ทฤษฏทเกยวของและเครองมอตางๆ ทใชในการจดท าโครงงาน
1.6.2 บทท 3 การออกแบบระบบกลาวถง วธและขนตอน กระบวนการด าเนนในการสรางโปรแกรมตงแตกระบวนการออกแบบจนกระทงการเขยนโปรแกรม
1.6.3 บทท 4 ผลการทดลอง กลาวถง ผลจากการด าเนนในบทท 3
1.6.4 บทท 5 สรปผลโครงงาน กลาวถง ผลลพธทไดจากการด าเนนงาน และขอเสนอแนะในการน าโครงงานไปประยกตใช
4
บทท 2
ทฤษฎทเกยวของ
2.1 ระบบเครอขายแลน ( LAN : Local area network)
ระบบเครอขายแลน เปนระบบทใชงานอยในบรเวณทไมกวางนก โดยอาจตดตงอยภายในอาคารเดยวกนหรอใกลเคยงกน เชน เครอขายภายในออฟฟศ , ส านกงาน และมกเชอมโยงกนดวยสอความเรวสง การตดตงสามารถท าไดงายๆ ส าหรบอปกรณนนสามารถหาไดงายและราคาถก มทงแบบไรสายและใชสาย ในปจจบนไดรบความนยมน ามาตดตงไวใชในบาน รปแบบโครงสรางระบบเครอขายแลนแสดงดงรปท 2.1
รปท 2.1 ระบบเครอขายทองถน [1]
2.2 ความรทวไปเกยวกบเครอขาย
2.2.1 แมคแอดเดรส(MAC Address)
ยอมาจาก Media Access Card Addressเปนตวเลขทก าหนดใหอปกรณเครอขาย โดยจะมตวเลขไมซ ากน มขนาด 6 ไบต(48 บต) ประกอบดวย 3 ไบตแรก บอกรหสผผลต 3 ไบตสดทายเปนตวเลขของอปกรณ แมคแอดเดรสมตวเลขเปนเลขฐาน 16 อาจจะใชวธเขยนไดหลายรปแบบ เชน การใชโคลอนขนxx:xx:xx:xx:xx:xx การใชชางวาง xx xx xx xx xx xx การใช – ขนระหวาง 3 ตวเลขแรกกบ 3 ตวเลขหลง xxxxxx-xxxxxx
5
2.2.2 ไอพแอดเดรส(IP Address)
ยอมาจาก Internet Protocol Address เปนหมายเลขประจ าคอมพวเตอรและอปกรณตางๆ ทเชอมตออยในเครอขาย เพอใชระบทอยหรอต าแหนงของคอมพวเตอรและอปกรณโดยไมซ ากนท าใหคอมพวเตอรและอปกรณสามารถตดตอสอสารหรอรบสงขอมลไดอยางถกตอง ไอพแอดเดรสมลกษณะเปนตวเลข 4 กลม แตละกลมจะคนดวยเครองหมายหพภาค (.) เชน 192.168.1.22 ไอพแอดเดรสกเปรยบเทยบไดกบเลขทบาน ซงบานแตละหลงจะตองมเลขทบานทไมซ ากน เพราะถาซ ากนแลว บรษไปรษณยจะหาทอยไมเจอ ท าใหสงจดหมายไมได ไอพแอดเดรสในปจจบนยงคงใชเวอรชน 4 แตในอนาคตจะน าเวอรชน 6 มาใช ( IPV6 )[2]ตามปกตส าหรบผใชอนเทอรเนตตามบานทวไป จะไดไอพแอดเดรสมากตอเมอใชโมเดมเชอมตอไปยงผใหบรการอนเทอรเนต ซงจะไดไอพแอดเดรสมาใชชวคราว 1 หมายเลขทใชไดจรงบนอนเทอรเนต (Public IP Address) ดงแสดงในรปท 2.2 และเมอตดการเชอมตอจากผใหบรการอนเทอรเนตแลว หมายเลขไอพแอดเดรสทไดรบมานกจะถกยกเลก ถาเชอมตอครงใหมกจะไดไอพแอดเดรสชดใหมมาอก เปนแบบนเรอยไป โดยสามารถตรวจดไอพแอดเดรสทไดรบมาจากผใหบรการอนเทอรเนตไดจากการใชค าสง ipconfig บน Command Prompt
ISP
10.54.36.12
User Name & Password
รปท 2.2 การแจกไอพแอดเดรสแบบชวคราว
ยงมการใชไอพแอดเดรสอกแบบหนง คอการไดไอพแอดเดรสแบบคงทโดยไมตอง
เปลยนไปเรอยเหมอนผใชตามบาน ซงจะไดมาจากผใหบรการอนเทอรเนตเชนเดยวกน เชน ได
ไอพแอดเดรสคลาสซ จ านวน 1 คลาส มจ านวนไอพแอดเดรสทสามารถน าไปก าหนดบน
คอมพวเตอรได 254 เลขหมาย สวนใหญแลวการไดรบไอพแอรสเดรสแบบคงทน มกจะเปน
องคกรขนาดกลางและขนาดใหญทมการเชอมตอไปยงผใหบรการอนเทอรเนตโดยใชลสไลนหรอ
โมเดมเอดเอสแอล แตส าหรบเครอขายอนทราเนตนน จะสามารถก าหนดไอพแอดเดรสไดเอง
ตามตองการ โดยใชไอพแอดเดรสแบบภายใน (Private IP Address) และถกก าหนดจากผดแล
ระบบเครอขายในองคกร
6
เพอความเขาใจทงายขน ไอพแอดเดรสจงถกเขยนใหอยในรปแบบเลขฐานสบทม
เครองหมายมหพภาค(.) คนไว เชน 192.168.0.1 ดงแสดงในตารางท 2.1 แตเวลาเกบคาใน
คอมพวเตอรจะเปนเลขฐานสอง มทงหมด 32 บต แบงเปน 4 กลมๆละ 8 บต ตวเลขแตละกลม
จะเกบคาทเปนตวเลขฐานสองไดถง 256 คา คอตงแต 0 ถง 255
ตารางท 2.1 ไอพแอดเดรสทเปนเลขฐานสองและฐานสบ
� 11000000 10101000 00000000 00000001
� 192 168 0 1
ไอพแอดเดรสประกอบดวยสองสวนหลก คอ เนตเวรคไอด(Network ID) กบ โฮสตไอด
(Host ID) ส าหรบเนตเวรคไอดเปนตวบอกถงขอบเขตเครอขาย โดยไอพแอดเดรสทม เนตเวรค
ไอดเหมอกน หมายความวาอยในเครอขายเดยวกน สวนโฮสตไอดเปนตวก าหนดทอยหรอ
ต าแหนงของคอมพวเตอรหรออปกรณนนๆ ตวอยางเชน มคอมพวเตอรสองเครอง ถกก าหนด
ไอพแอดเดรสทอยในคลาสซ ซงเครองทหนงมไอพแอดเดรส 192.168.10.1 สวนเครองทสองม
ไอพแอดเดรส 192.168.10.2 ท าใหเราบอกไดวาคอมพวเตอรทงสองเครองนอยในเครอขาย
เดยวกน เพราะมเนตเวรคไอดเหมอนกน คอ 192.168.10.x แตโฮสตไอดตางกน คอ 1 และ 2 ท
ระบวาเปนเครองท 1 และ 2 ตามล าดบ สวนทเปนเนตเวรคไอดจะเปลยนแปลงไมได สวนท
เปลยนแปลงไดคอ โฮสตไอดซงน าไปก าหนดใหกบคอมพวเตอรในเครอขาย
ไอพแอดเดรสมการแบงขอบขายออกหลายระดบหรอทเรยกวา “คลาส”(Class) โดยถก
แบงไว 5 คลาส คอ คลาส A,B,C,D และ E แตทใชกนในระบบเครอขายทวไปจะใชกน 3 คลาส
คอ A,B,C สวนคลาส D เอาไวใชในเครอขายมลตคลาส( Multicast) และทเหลอคอคลาส E ถก
สงวนไว ไมมการใชงาน ซงดหมายเลขไอพแอดเดรสของแตละคลาสไดในตารางท 2.2
7
ตารางท 2.2 ไอพแอดเดรสของแตละคลาส
�
A
B
C
D
E
�
1.0.0.0 126.255.255.255
128.0.0.0 191.255.255.255
192.0.0.0 223.255.255.255
224.0.0.0 239.255.255.255
240.0.0.0 247.255.255.255
��
126
16,384
2,097,152
-
-
16,777,214
65,534
254
-
-
คลาส A มไอพแอดเดรสทงหมด 126 เครอขาย ในแตละคลาสจะก าหนดไอพแอดเดรส
ได 16 ลานเครองสวนทเปนเนตเวรคไอดคอตวเลขหนงชดทางซาย (8 บต) สวนตวเลขสามชด
หลงทางขวาคอ โฮสตไอด(24บต) ซงสามารถเปลยนแปลงได โดยผดแลระบบเครอขายจะ
ก าหนดสวนทเปน โฮสตไอดเพอแจกจายใหกบคอมพวเตอรในเครอขาย ซงไอพแอดเดรสคลาส
A จะใชกบองคกรขนาดใหญ ดงแสดงในตารางท 2.3
ตารางท 2.3 ตวอยาง เนตเวรคไอดกบ โฮสตไอดของไอพแอดเดรสคลาส A
� A
Network ID Host ID
10 75 110 135
คลาส B มไอพแอดเดรสทงหมด 16,384 เครอขาย ในแตละคลาสจะก าหนดไอพ
แอดเดรสได 65,534 เครองสวนทเปน Network ID คอตวเลขหนงชดทางซาย (16 บต) สวน
ตวเลขสามชดหลงทางขวาคอ Host ID (16บต) ซงไอพแอดเดรสคลาส B เหมาะส าหรบองคกร
ขนาดกลาง ดงแสดงในตารางท 2.4
ตารางท 2.4 ตวอยาง เนตเวรคไอดกบ โฮสตไอดของไอพแอดเดรสคลาส B
� B
Network ID Host ID
128 44 129 60
คลาส C มไอพแอดเดรสทงหมด 2,097,152 เครอขาย ในแตละคลาสจะก าหนดไอพ
แอดเดรสได 254 เครองสวนทเปน เนตเวรคไอดคอตวเลขสามชดแรกทางซาย (24บต) หนงชด
8
ทเหลอทางขวาคอ โฮสตไอด(8บต) ซงไอพแอดเดรสคลาส Cจะใชในองคกรขนาดเลก ดงแสดง
ในตารางท 2.5
ตารางท 2.5 ตวอยาง เนตเวรคไอดกบ โฮสตไอดของไอพแอดเดรสคลาส C
� C
Network ID Host ID
192 205 81 5
2.2.3 ซบเนตมารค
เปนคาทระบวาคอมพวเตอรเครองนอยในเครอขายใด หรอเปนคาทแบงกลมเครอขาย
โดยตองสอดคลองกบคลาสของไอพแอดเดรส ซบเนตมาสคจะเปนตวเลข 4 ชด เชนเดยวกบไอ
พแอดเดรส แตตะมคาเปน 0 กบ 255 เทานน (บางกรณกเปนคาอนได เมอถกแบงซบเนต)
ซบเนตมาสคมการแบงไวส าหรบไอพแอดเดรสทง 3 คลาส ดงตารางท 2.6
ตารางท 2.6 คาซบเนตมาสค
�
A
B
C
� �
255.0.0.0
255.255.0.0
255.255.255.0
ซบเนตมาสคส าหรบคลาส A มเลข 255 จ านวนหนงชด คอ 255.0.0.0 หมายความวา
ในเครอขายนจะมไอพแอดเดรสหนงชดแรกทเหมอนกน เชน 10.0.0.1,10.1.50.6,10.2.33.4 จง
ถอวาไอพแอดเดรสทงหมดนอยในเครอขายเดยวกน
ซบเนตมาสคส าหรบคลาส B มเลข 255 จ านวนสองชด คอ 255.255.0.0 หมายความวา
ในเครอขายนจะมไอพแอดเดรสสองชดแรกทเหมอนกน เชน
172.30.9.1,172.30.93.2,172.30.93.77จงถอวาไอพแอดเดรสทงหมดนอยในเครอขายเดยวกน
9
2.2.4 ไอพแอดเดรสทใชงานในเครอขายสวนตว
เปนไอพแอดเดรสทไมสามารถก าหนดใหกบเครองทวไป สงวนใชในเครอขายสวนตว
เทานน ไมสามารถใชในเครอขายภายนอกอยางอนเทอรเนต
คลาส A คอเครอขาย 10.0.0.0
คลาส B คอเครอขาย 172.16.0.0 – 173.31.0.0
คลาส C คอเครอขาย 192.168.0.0 – 192.168.255.0
2.3 โพรโทคอล(Protocol )
โพรโทคอลเปนมาตรฐานในการสอสารขอมลของคอมพวเตอร หรออาจกลาวไดวาเปน
ภาษาทคอมพวเตอรใชสอสารกน ดงนนการทคอมพวเตอรทตองการสอสารกนจ าเปนตองใช
ภาษาหรอโพรโตคอลเดยวกน เพราะไมเชนนนคอมพวเตอรกจะสอสารกนไมไดปจจบน
โพรโตคอลทเปนทนยมใชมากทสดคอ โพรโทคอลทซพ ไอพ(TCP/IP)ยอมาจากTransmission
Control Protocol/Internet Protocol
โพรโทคอลทซพ ไอพ ถกพฒนามาแลวกวา 20 ป ซงจดประสงคของการวจยกเพอ
เชอมตอคอมพวเตอรทตางแพลตฟอรมกนใหสามารถสอสารกนผานเครอขายได ซงสามารถท า
ไดโดยการแบงโพรโทคอลเปนชน และเปนการแยกการท างานของแอพพลเคชนของผใชออก
จากฮารดแวรทใชรบสงขอมลผานเครอขาย ชดโพรโทคอลนจะมรปแบบทแตกตางจากแบบ
อางองโอเอสไอ( OSI ) เลกนอย การออกชดโพรโทคอลทซพ ไอพ จะมงเนนไปทการเชอมตอ
ระหวางระบบทตางกน ในขณะทแบบอางองโอเอสไอ จะเนนไปทการแบงการท างานของโพร
โทคอลออกเปนชนๆ โพรโทคอลทซพ ไดกลายเปนมาตรฐานกลางในการสอสารขอมลของ
คอมพวเตอร เนองจากเปนภาษาทใชในระบบอนเทอรเนต ดงนนเครอขายสมยใหมจงจ าเปนท
ตองสรางใหสามารถรองรบโพรโทคอลน
10
7
6
5
4
2
3
1
Application
Physical
Data Link
Network
Presentation
Session
Transport
OSI Reference Model TCP/IP
Application
Transport
Internet
Network Access
FTP,Telnet,HTTP,SNMP,DNS,etc.
TCP UDP
ARP,RARPICMP,IGMP
IP
Not Specified
รปท 2.3 เปรยบเทยบโพรโทคอลแบบอางองโอเอสไอและ โพรโทคอลทซพ ไอพ
รปท 2.3 บนแสดงการเปรยบเทยบชนของโพรโทคอลระหวางแบบอางองโอเอสไอ และ
ทซพ ไอพ ซงแบงโพรโทคอลออกเปน 4 เลเยอร คอ ชนประยกตใชงาน (Application Layer),
ชนทรานสปอรท(Transport Layer),ชนอนเทอรเนต(Internet)และชนเขาใชเครอขาย(Network
Access) การเปรยบเทยบการท างานของโพรโทคอลทซพ ไอพ กบแบบอางองโอเอสไอ นนอาจ
ไมตรงมากนก เพราะมบางโพรโทคอลของ ทซพ ไอพ ทท างานมากกวาหนงชน แตรป
ดงกลาวกเปรยบเทยบใหเหนภาพพอคราวๆ
หลกการท างานของโพรโทคอลทซพ ไอพ สรปไดดงนคอ การสอสารจะเรมจากแอพ
พลเคชนของผใชสงขอมลใหกบโพรโทคอลในชนแอพพลเคชน หลงจากนนชนแอพพลเคชนจะ
เพมขอมลสวนหวซงจะประกอบดวยชอของคอมพวเตอรทตองการสอสาร และหมายเลขพอรต
ของเครองนน ขอมลกจะถกสงตอไปยงชนทรานสปอรท ซงอาจจะใชโพรโทคอลทซพ(TCP)
หรอ ยดพ (UDP) ขนอยกบแอพพลเคชนทใชเมอชนน ไดรบขอมลกจะแบงขอมลออกเปน
สวนยอยๆ ซงแตสวนจะถกเพมขอมลสวนหวเขาไป ขอมลสวนยอยๆ นจะเรยกวา เซกเมนต
(Segment)
ขอมลสวนหวของแตละเซกเมนตจะถกเพมเขาไปอยางเหมาะสม หลงจากนนแตละเซก
เมนตกจะถกสงตอไปใหชนอนเทอรเนต เมอขอมลมาถงชนนกจะถกเพมขอมลสวนหวใหแตละ
เซกเมนตเชนกน ขอมลทเพมเขาไป เชน หมายเลขไอพ,ประเภทของโพรโทคอลทใช (ทซพ
หรอ ยดพ) และ เชคซม (Checksum) เปนตน ถาขอมลทสงมามการแบงยอยอกกจะมการเพม
11
ขอมลทเกยวของกบการแบงยอยเพมเขาไปดวย ชดขอมลทอยในชนนจะเรยกวา แพคเกต
(Packet) หลงจากนนแตละแพคเกตขอมลกสงตอไปใหชนเขาใชเครอขาย เพอสงขอมลไปตาม
ชองสอสารตอไป เมอแพกเกตเดนทางไปถงทหมาย เครองปลายทางกจะท าตามขนตอนท
ตรงกนขามกบเครองสง และขอมลกจะถกสงผานตอไปใหแอพพลเคชนเพอน าขอมลไปโพรเชส
ตอไป[1]
2.4 โพรโทคอลทซพ
โพรโทคอลทซทพ ยอมาจาก Transmission Control Protocol โพรโทคอลทซพ
ใหบรการในการรบสงขอมลของโพรโทคอลในระดบชนสอสารท 7 เชน โพรโทคอลเฮชททพ
(HTTP) โพรโทคอลเทลเนต(Telnet) โพรโทคอลเอฟทพ(FTP) เปนตน โพรโทคอลทซพเปนโพร
โทคอลทใหบรการในดานของ ความเชอถอของการสงขอมล (Reliability)การเรยงล าดบของไบต
ของทซพทภาครบกอนสงใหโพรโทคอลในระดบชนสอสารท 7 การแบงยอยและการแบงยอย
เซกเมนต(Segmentation) การควบคมอตราการสง (Flow Control) การตรวจสอบความ
ผดพลาด(Error Detection) การตรวจสอบและแกไขการสญหายของเซกเมนต(Loss
recovery) การควบคมการคบคงของปรมาณทราฟฟกของขอมล (Congestion Control) [3]
L7 L7
TCP Client TCP ServerPeer – to- peer
communication
SYN �
SYN ACK
ACK
DATA
ACK
FIN
FIN ACK
ACK
- �
- � � � �
- � �
- � �
� �
รปท 2.4 การแลกเปลยนของเซกเมนตของโพรโทคอลทซพ
12
จากรป 2.4 ขนตอนการสรางการเชอมตอของโพรโทคอลทซพแบบเชอถอได คอ ตองม
การเรมตนเชอมตอกนกอนถงจะตดตอกนได คลายการโทรศพททเร มโทรตองรอฝ งตรงขามรบ
ถงจะเรมพดคยเรมตดตอสอสาร การเรมตนตดตอสอสารในโพรโทคอล นมข นตอน 3 ขนตอน
• ฝ งลกขายสงแพคเกตทต งคา SYN flag ไปยงฝ ง แมขาย ขนตอนนเปนการขอเรม
ตดตอนสอสาร
• ฝ งแมขาย สงแพคเกต ทต งคา SYN flagและACK flag กลบไปยงฝ ง ลกขายขนตอน
นคลายเปนการบอกตอบรบการตดตอสอสาร
• ฝ งลกขายสงแพคเกต ทต งคา ACK flag กลบไปยงฝ งแมขายอกครง ขนตอนนคลาย
เปนการยนยนการตดตอสอสารหาก 3 ขนตอนนส าเรจเทากบวาตดตอส าเรจ การตดตอสอสาร
ระหวาง ลกขายกบ แมขายกจะเรมตนขนได
ขบวนการเลกการเชอมตอของโพรโทคอลทซพเมอตดตอสอสารสงขอมลเรยบรอยแลว
การจบการตดตอสอสารกตองมข นตอนดวย ขนตอนคลายๆ กบการเรมตดตอสอสารคอ ม 3
ขนตอนเชนกน
• ฝ งทตองการตดการสอสารสมมตวาเปนฝ งลกขายจะสงแพคเกต ทต งคา FIN flag ไป
ยงฝ งแมขาย ขนตอนนคลายเปนการบอกวาจะหยดการตดตอสอสาร
• ฝ งแมขาย สงแพคเกต ทต งคา FIN flag และ ACK flag กลบไปยงฝ ง ลกขาย
ขนตอนนคลายเปนการบอกตอบรบการหยดตดตอสอสาร
• ฝ งลกขายสงแพคเกต ทต งคา ACK flag กลบไปยงฝ งแมขายอกครง ขนตอนน
คลายเปนการยนยนการหยดตดตอสอสาร
คณสมบตของโพรโทคอลทซพ การสงขอมลของโพรโทคอลทซพเปนแบบทเชอถอได
และจะดแลความสมบรณของขอมลใหโดยผเขยนโปรแกรมไมตองท างานในสวนน เมอมการสง
ขอมล การท างานของโพรโทคอลจะไมสงโดยทนท แตขอมลจะถกน าไปเกบไวใน บฟเฟอร
(buffer) ซงถกจดการโดยระบบปฏบตการ) กอนจนกวาจะพรอมสง ดงรปท 2.5 และในขณะนน
ถาหากวาแอพพลเคชน ตองการสงขอมลเพมอกขอมลทตองการสงนจะถกน ามาเกบรวมใน
13
บฟเฟอร เมอพรอมสงจะสงออกไปดวยกนโดยไมแยกวาขอมลชดใดมากอนหลง สวนนอาจเปน
ปญหาได ดงรป ตรงสวนนผเขยนโปรแกรมตองท างานแยกขอมลทตองการเอาเอง
data
data
data
OS
data
data
data
OS
Server Client
application application
รปท 2.5 ลกษณะการสงขอมลของโพรโตคอลทซพ
data 1 and data 2
OS
Server Client
application application
data 1 and data 2
Data 1 data2
OS
Data 1 data2
Data 1 data2
Data 1 data2
รปท 2.6 ลกษณะการสงขอมลของโพรโตคอลทซพทผเขยนโปรแกรมตองจกการแยกขอมลเอง
14
จากรป 2.6 จะเหนไดวาแอพพลเคชน ฝ งแมขาย รบขอมลมาทละ 2 ชดเลยนนคอ
data1 กบ data2 ตรงนผเขยนโปรแกรมตองหาวธในการแยกขอมลทงสองออกจากกน หรอ
อาจจะหาวธในการรบขอมลมาทละสวน[3]
2.5 พอรต(Port)
พอรต เปนชองทางการสอสารของคอมพวเตอรทเปดบรการตางๆ โดยหากเปรยบไอพ
แอดเดรสเปนเลขทบาน หมายเลขพอรตกอาจจะเปรยบไดกบประตบานหรอประตหอง
ยกตวอยางเชน เราตองการเดนไปหาเพอนทอยหอพกแหงหนง ดงนนเราจะตองรทอยของ
หอพกกบหมายเลขของหองพก แลวจงเดนทางไปหาหอพกและหาหองพกได เปรยบเทยบกบ
เราตองรไอพแอดเดรสกบหมายเลขพอรตของเครองคอมพวเตอรปลายทาง จงจะเขาไปใช
บรการบนเครองคอมพวเตอรเครองนนๆ ได และเครองคอมพวเตอรหนงเครองสามารถเปด
บรการไดหลายอยาง โดยบรการแตละประเภทจะมพอรตเปนของตนเอง เชน บรการ เอชททพ
ใชพอรตหมายเลข 80 สวนบรการเอฟทพ ใชพอรตหมายเลข 21 เปนตน สถาบน IANA
(Internet Assigned Numbers Authority) ซงเปนสถาบนทควบคมดแลการใชหมายเลขพอรต
ไดจดแบงไดเปน 3 ประเภทไดแก
• well Known Port เปนหมายเลขทถกก าหนดไวส าหรบแอพพลเคชนทใชกนเปน
ประจ า เชน แอพพลเคชนทใชโพโตคอลเอชททพ มหมายเลขจ าประตวคอ 80 หรอพอรต
หมายเลข 110 ส าหรบแอพพลเคชนทใชโพโตคอล POPเปนตน ซงหมายเลขพอรตประเภท
well Known Port มหมายเลขตงแต 0 ถง 1023 แสดงในตาราง 2.7
ตารางท 2.7 หมายเลขพอรตของบางแอพพลเคชน
พอรต โพรโทคอล แอพพลเคชน 20 TCP FTP(Data) 21 TCP FTP(Control) 22 TCP SSH (Secure shell) 23 TCP Telnet 25 TCP SMTP 53 TCP/UDP DNS 80 TCP HTTP
15
ตารางท 2.7 (ตอ) หมายเลขพอรตของบางแอพพลเคชน
พอรต โพรโทคอล แอพพลเคชน 110 TCP POP3
143 TCP IMAP
161 UDP SNMP
• Registered Port เปนหมายเลขพอรตทเปดโอกาสใหลงทะเบยนขอใชได เพอปองกน
การใชหมายเลขพอรตซ า ซงขอใชไดตงแตหมายเลข 1,024 จนถง 49,151
• Dynamic Port จะมหมายเลขตงแต 49,152 ถง 65,535ซงหมายเลขพอรตเหลาน
เปนหมายเลขพอรตอสระ[1]
2.6 ซอกเกต
แมวานกออกแบบระบบจะสามารถใสสวนการเชอมตอกบซอฟแวร(Software
Interface)อยางไรกได แตในทางปฏบตกลบมรปแบบของ TCP/IP Software Interface อย
เพยงไมกแบบเทานน และ TCP/IP Software Interface ทนยมมอยเพยง 2 รปแบบ
เทานนคอ
• socket Interface เปน TCP/IP Software ทพฒนาขน โดย University of
California at Barkley ซงในตอนตนไดพฒนารปแบบการเชอมตอแบบนเพอใชกบ
ระบบปฏบตการ Berkley Unix
• Transport Layer Interface หรอ TLI เปนTCP/IP Software Interface ท
พฒนาโดย AT&T เพอใชกบระบบปฏบตการ System Unix
2.6.1 Interface Functionality
แมวาทางผพฒนา TCP/IP Protocol Software Interface จะไมไดมการก าหนด
รปแบบหรอวธการใดๆในการเชอมตอ ApplicationSoftware กบ TCP/IP Protocol
Software แตทางผพฒนาเองกไดมขอแนะน าเกยวกบ Functions ตางๆ ทจ าเปน เปนตนวา
Interface จะตองสามารถรองรบการท างานตางๆ ตาม Concept ดงตอไปน
16
- Allocate local resources for communication
- Specify local and remote communication end-points
- Initiate a connection (client side)
- Wait for an incoming connection(server side)
- Send or receive data
- Determine when data arrives
- Generate urgent data
- Handle urgent data
- Terminate a connection gracefully
- Handle connection terminate from the remote site
- Abort communication
- Handle error condition or a connection abort
- Release local resources when communication finishes
นอกจาก Concept ในการท างานดงทไดกลาวมาแลวขางตน ทางผพฒนามาตรฐาน
โพรโทคอลทซพ ไอพ ไดสราง Conceptual Interface ขนมาเพอเปนแนวทางใหนกออกแบบ
ระบบสามารถพฒนาซอฟแวรของตนไดงายและเรวขน โดย Conceptual Interface ททาง
ผพฒนามาตรฐาน โพรโทคอลทซพ ไอพ ไดสรางขนนนจะอยในรปของ Set of Functions เหต
ท Conceptual Interface อยในรปแบบของ Procedures และ Functions นนเนองมาจากใน
ชวงเวลาทพฒนา Conceptual Interface ระบบปฏบตการตางๆ ในยคนนนยมใชวธการซงเรยก
กนวา Procedural Mechanism ในการเคลอนยายการควบคม จาก Application Software ไป
ยงระบบปฏบตการ ดงนนจงกลาวโดยสรปเกยวกบ Conceptual Interface ไดดงน
“Conceptual Interface ซงถกก าหนดโดยผพฒนามาตรฐาน ทซพ ไอพ นนจะไมระบรปแบบ
ของการแทนขอมล หรอ รายละเอยดในการเขยนโปรแกรม หากแตแสดงเพยงตวอยางหนงของ
17
การเชอมตอ ซงมความเปนไปไดในทางปฏบตการจะสามารถใหบรการแก Application
Software ทตองการใชงาน โพรโทคอลทซพ ไอพ
2.6.2 Socket Types Sockets
สามารถแบงออกเปนประเภทตามลกษณะการรบสงขอมลผานเครอขายไดเปน 3
ประเภทดงน
• stream Sockets หรอ Connection Oriented Sockets
• Datagram Sockets หรอ Connectionless Sockets
• Raw Sockets
2.6.3 working with sockets in.Net
ใน .Net การท างานทเกยวของกบ Sockets จะตองเรยกใชงาน Namespace ทชอวา
System.Net.Sockets ซงเปน Namespace ทบรรจ Classes ตางๆทสนบสนนการท างานกบ
Sockets โดย Classes ทเกยวของกบการท างานหลกๆ กบ Sockets มดงน
- Multicast Option
- Network Stream
- Tcp Client
- Tcp Listener
- Udp Client
- Socket Exception
- Socket
โดย Class Socket จะม function พนฐานตางๆ ทจ าเปนส าหรบการสราง Application
ซงใชงาน Sockets ส าหรบ Properties ทส าคญส าหรบ System.Net.Sockets.Socket ไดแก
- AddressFamily
18
- Available
- Blocking
- Connected
- LocalEndPoing
- ProtocolType
- RemoteEndPoing- SocketType
และ Method ทส าคญ System.Net.Sockets.Socket มดงน
- Accept()
- Bind()
- Close()
- Connect()
- GetSocketOption()
- IOControl()
- Listen()
- Receive()
- Poll()
- Select()
- Send()
- Shutdown()
19
2.6.4 Sockets Passive Sockets
Passive Sockets หรอ Sockets ซงใชใน Server Applicatication นนมข นตอนการ
สรางดงรปท 2.7 น
รปท 2.7 Diagram ขนตอนการสราง Passive Sockets[5]
2.6.5 Active SocketsActive Sockets
หรอ Sockets ประเภททใชงานใน Client Application มขนตอนการสรางดงน
รปท 2.8 Diagram ขนตอนการสราง Active Sockets[5]
Open a socket
Name the Socket(Bind)
Listen for incoming connection
Accept Client conection
Send Receive Data
Close socket
Open a socket
Connect to Remote Host
Send Receive Data
Close socket
20
2.7 การโปรแกรมซอกเกต( Socket Programming)
การพฒนาโปรแกรมเพอใหสอสารกนใน Network นน จะตองพฒนาแอพพลเคชน 2
โปรแกรมดวยกน คอ โปรแกรมทท าหนาทเปนเครองไคลเอนต( Client )และโปรแกรมทท า
หนาทเปนเซรฟเวอร( Server ) โดยเมอ เรมโปรแกรมทง 2 แลว จะอานและสงขอมลกนผาน
ทางซอกเกต( Socket) ซงเรยกแอพพลเคชนเชนนวา Client – Server Application โดยจะแบง
ออกเปน 2 ประเภทคอ
• Client – Server ทท างานโดยใชโพรโทคอล ทได Define ไวใน RFC
ผพฒนาโปรแกรม ไคลเอนต และเซรฟเวอรจะตองพฒนาใหโปรแกรมท างานตามรปแบบท
ก าหนดไวใน RFC เดยวกน เพอให ไคลเอนตและ เซรฟเวอรสามารถสอสารกนไดอยางถกตอง(
ตาม RFC เดยวกน) เชน ถาตองการพฒนา FTP (RFC959) ผพฒนาโปรแกรม FTPClient
จะตองใหโปรแกรมท างานตามขอก าหนดใน RFC959 อยางถกตอง(Port number,รปแบบ
ขอความ (message) ทท าการรบ-สง) เชนเดยวกนกบผพฒนาโปรแกรมเซรฟเวอรกจะตองให
โปรแกรมท างานตามขอก าหนดใน RFC959 เพอทจะใหไคลเอนตและเซรฟเวอรท างานรวมกน
ไดอยางถกตอง
• Proprietary Client – Server Application ในการพฒนาโปรแกรมลกษณะน ผพฒนา
ไมตองอางองตาม RFC แตนนหมายถง จะตองพฒนาทง Client application และ Server
application (เพราะไมตองอางองตาม RFC ซงเปนมาตรฐานสากล) ผพฒนาจะตองพฒนา
โปรแกรมให ไคลเอนต และ เซรฟเวอร ท างานรวมกนไดอยางถกตองตามทผพฒนานนก าหนด
ขนเองแตผพฒนาตองระวงไมใหใช well-Know Port ทก าหนดไวใน RFC ผพฒนาจะตองท า
การเลอกใช Transport Protocol ระหวาง ทซพ และยดพ โดยท ทซพ เปน โพรโทคอล แบบ
Connection – Oriented ซงใหความเชอถอไดระหวางการสง-รบขอมล และ ยดพ เปน โพรโท
คอล แบบ Connectionless ซงไมไดใหการรบประกนวา ขอมลจะสงถงกนหรอไม
2.8 คลาสทจ าเปนในการเขยนโปรแกรมทางเนตเวรคดวย C#
คลาสทจ าเปนตางๆไดแกIPAddress,IPEndPoint,IPHostEntry,Dns,Encoding,Socket
2.8.1 คลาส IPAddress
21
เปนคลาสส าหรบเกบขอมล Address เพอใชส าหรบอางองเครองทตองการตดตอสอสาร
อยใน Namespace System.Net รปแบบของ Constructor คอ
Public IPAddress (byte [ ] address)
Public IPAddress(long newAddress)
Public IPAddress(byte [ ] address,long scopeid )
ฟงกชนทส าคญ คลาส IPAddress มฟงกชนมากมาย แตทส าคญแสดงในตารางท 2.8
ตารางท 2.8ฟงกชนส าคญของคลาส IPAddress
ฟงกชน ค าอธบาย parse ฟงกชนส าหรบแปลง string ขอความ ip address ท
สงเขามาแลว return เปนตวแปรชนด IPAddress
ถงจะม constructor ถง 3 แบบแตการใชงานจะใชฟงกชน Parse ของคลาส IPAddress
เปนตวชวยในการสราง IPAddress ฟงกชน Parse มรปแบบการรบคา sting แลว return มา
เปนคลาส IPAddress ตวอยางการใชฟงกชน IPAddressip = IPAddress.Parse(“127.0.0.1”);
Fields ทส าคญคอแสดงในตารางท 2.9
ตารางท 2.9 Fields ทส าคญของคลาส IPAddress
Fields(ตวแปรภายในคลาส) ค าอธบาย Any คาทอางถง IP ทตงไวในเครอง Loopback คาทเปน loopback ของเครอง
ตวอยางการใช Fields IPEndPoint ipendpoint = new IPEndPoint(IPAddress.Any,10000);
2.8.2 คลาส IPEndPoint
เปนคลาสส าหรบเกบขอมลคลายกบคลาส IPAddress แตเพมการเกบคา port เพอใช
ส าหรบอางองทอยของเครองทตองการตดตอสอสาร อยใน Namespace System.Net รปแบบ
ของ Constructor คอ
22
Public IPEndPoint (long address,int port)
Public IPEndPoint (IPAddress address,int port)
ตวอยางการใช Constructor
IPEndPointipep = new IPEndPoint(IPAddress.Parse(“127.0.0.1”),10000);
ตวอยางนเปนการก าหนดใหตวแปร ipep เกบคา ip 127.0.0.1 และ port ท 10000
2.8.3 คลาส IPHostEntry
เปนคลาสส าหรบเกบขอมลคลายกบเปนอาเรยของคลาส IPAddress ใชส าหรบรบ
ขอมลทจะ return มาของคลาส Dns อยใน Namespace System.Net รปแบบของ Constructor
คอ Public IPHostEntry ()สวนใหญแลวจะประกาศตวแปรชนดนเพอรบขอมลจากการ return
จากคลาสอน Properties ทส าคญ แสดงในตารางท 2.10
ตารางท 2.10 Properties ส าคญของคลาส IPHostEntry
Properties ค าอธบาย AddressList เปน Properties ทคลายกบเปนอาเรยของ
คลาส IPAddress
ตวอยางการใชงาน Properties
IPHostEntry arrayIPAddress = Dns.GetHostByName(hostString);
Console.WriteLine(arrayIPAddress.AddressList[0]);
คลาสนจะไดใชควบคกบคลาส Dns เสมอเวลาเขยนโปรแกรม
2.8.4 คลาส Dns
เปนคลาสทจดหาฟงกชนในการแปลงจาก Domain name เปน IP Address หรอ
ตรงกนขาม อยใน Namespace System.Net ฟงกชนทส าคญ คลาส Dns มฟงกชนมากมาย แต
ทส าคญแสดงในตาราง 2.11
ตารางท 2.11 ฟงกชนส าคญของคลาส Dns
ฟงกชน ค าอธบาย GetHostByAddress ฟงกชนส าหรบรบคา address ของ host แลว return
23
ออกมาเปนตวแปรชนด IPHostEntry ใชเมอร ip แตอยากร domain name
GetHostByName ฟงกชนส าหรบรบคา host name แลว return ออกมาเปนตวแปรชนด IPHostEntry ใชเมอร domain name แตอยากร ip
GetHostEntry ฟงกชนส าหรบรบคา address แลว return ออกมาเปนตวแปรชนด IPHostEntry
IPHostEntry GetHostByAddress(String) หรออกรปแบบเปน IPHostEntry
GetHostByAddress(IPAddress)
IPHostEntry GetHostByName(String)
IPHostEntry GetHostEntry(String) หรออกรปแบบเปน IPHostEntry GetHostEntry
(IPAddress)
2.8.5 คลาส Encoding
การสงขอมลดวยคลาส Socket ตองสงเปนขอมลชนด byte บางทขอมลอาจเปน
ขอความ คลาสนจะใชส าหรบชวยแปลงขอมลจากชนดหนงเปนอกชนดหนง เพอสงและรบขอมล
ได อยใน Namespace System.Text ฟงกชนทส าคญ คลาส Encoding มฟงกชนมากมาย แตท
ส าคญแสดงในตาราง 2.12
ตารางท 2.12 ฟงกชนส าคญของคลาส Encoding
ฟงกชน ค าอธบาย GetBytes แปลงขอมลเปน byte GetString แปลงขอมลเปน string
ตวอยางการใชงานฟงกชน
ฟงกชน GetBytes
string str = “test text”;
Encoding ascii = Encoding.ASCII;
24
Byte [ ] byte = ascii.GetBytes(str);
ฟงกชน GetStrng
Encoding ascii = Encoding.ASCII;
string str = ascii. GetStrng (ตวแปรชนด byte[ ]);
Properties ทส าคญ แสดงในตาราง 2.13
ตารางท 2.13 Properties ทส าคญของคลาส Encoding
Properties ค าอธบาย ASCII Properties นจะ return คามาเปนตวแปรชนด Encoding
จะใช Properties นในการเรมตนการใชงานคลาส Encoding แบบตวอกษร ascii
2.9 คลาส ซอกเกต
เปนคลาสส าหรบสงขอมลทางเนตเวรค อยในNamespaceSystem.Net.Sockets
รปแบบของ Construtor คอ
PublicSocket (SocketInformationsocketInformation)]
PublicSocket(AddressFamilyaddressFamily,SocketType,ProtocolTypeprotocolType)
พารามเตอรม 3 ตวไดแก
• addressFamilyเปนตวแปรชนด AddressFamilyส าหรบก าหนดชนดของ addressท
ตองการใหตดตอ สวนใหญใช InterNetworkซงคอ IPaddressversion 4 นนเอง
• socketType เปนตวแปรชนด socketType ส าหรบก าหนดชนดของ socket สวนใหญ
ใชอย 2 อยางคอ แบบ Stream ส าหรบ Connection Oriented เชน TCP และ แบบ Dgram
ส าหรบ Connectionless เชน UDP
• ProtocolType เปนตวแปรชนด ProtocolType ส าหรบก าหนดชนดของ Protocol ทใช
สวนใหญใชอย 2 อยางคอ ProtocolType.Tcp กบ ProtocolType.Udp
ฟงกชนทส าคญ คลาส Socket มฟงกชนมากมาย แตทส าคญแสดงในตาราง 2.14
25
ตารางท 2.14 ฟงกชนส าคญของคลาส Socket
ฟงกชน ค าอธบาย Bind ฟงกชนนอยในสวนของ server ใชส าหรบผกคาตว
แปร Socket ทตงขนมากบ server Listen ฟงกชนนอยในสวนของ server ใชส าหรบรอการรบ
Connect จาก Client Accept ฟงกชนนอยในสวนของ server ใชส าหรบยอมรบการ
Connect จาก Client Send ฟงกชนส าหรบสงขอมลใชทงสวนของ server และ
Client Receive ฟงกชนส าหรบรบขอมลใชทงสวนของ server และ
Client Close ฟงกชนส าหรบปดขอมลใชทงสวนของ server และ
Client Connect ฟงกชนส าหรบ Connect ส Server ใชส าหรบ Client
• ฟงกชน Bind
รปแบบ Public void Bind (EndPoint localep)
พารามเตอร localep ส าหรบก าหนด address ของ Server นนเอง ในทนเราจะใชตว
แปรชนด IPEndPoint ใสเปนพารามเตอร
•ฟงกชน Listen
รปแบบ Public void Listen (int backlog)
พารามเตอร backlog ส าหรบรบคาตวเลขวาจะให Connect เขามาไดก Client
• ฟงกชนAccept
รปแบบ Public Socket Accept()
•ฟงกชน Send ฟงกชนมหลายรปแบบแตจะกลาวถงเพยง 2 รปแบบทจะใชงาน
รปแบบ
Public int Send (byte [ ] buffer )
Public int Send(byte [ ] buffer,int offset,int size,SocketFlags socketFlags)
26
พารามเตอร
buffer ตวแปรทเกบขอมลส าหรบสง
offset ต าแหนงเรมตนของ buffer ทใหสงขอมล
size จ านวนขอมลทจะสง
socketFlags เปน flag ส าหรบก าหนดการสงในทนจะใสเปน 0 คอไมม flag
• ฟงกชนReceive
ฟงกชนมหลายรปแบบแตจะกลาวถงเพยง 2 รปแบบทจะใชงาน
รปแบบ
Public int Receive (byte[ ] buffer)
Public int Receive (byte[ ] buffer,int offset.int size,socketFlags socketFlags)
พารามเตอร
buffer ตวแปรทเกบขอมลส าหรบรบ
offset ต าแหนงเรมตนของ buffer ทใหรบขอมล
size จ านวนขอมลทจะรบ
socketFlags เปน flag ส าหรบก าหนดการรบในทนจะใสเปน 0 คอไมม flag
• ฟงกชน Close
รปแบบ
Public Void Close()
Public Void Close(int timeout)
พารามเตอร timeout คอ ระยะเวลาในการคอยกอนการ Close เพอการสงขอมลใหเสร
• Connect
รปแบบ Public Void Connect (EndPoint remoteEP)
public void Connect(IPAddress address,int port)
มรปแบบมากมายแตจะใชอย 2 รปแบบเทานน
รปแบบแรก พารามเตอร remoteEP ของรปแบบแรกจะเปนตวแปรเกบทอยของเครอง
ทจะตดตอดวยชนด EndPoint ในทนจะใช IPEndPoint เลย
รปแบบท 2 พารามเตอร address เปนตวแปรชนด IPAddress เกบทอยของเครองทจะ
ตดตอดวยพารามเตอร Port ส าหรบระบ Port ทจะตดตอ
27
2.10 การใชงานคลาสชวยเหลอ
คลาส TcpClientคลาส TcpListenerคลาส NetworkStreamเปนคลาสชวยเหลอแทนการ
ใชงานคลาส Socket
2.10.1 คลาส TcpClient
ม Constructor 4 แบบคอ
• public TcpClient() เปน Constructor ไมมพารามเตอร
• public TcpClient(AddressFamily family)พารามเตอร family คอ ตวแปรชนด
AddressFamilyเปนการก าหนดลกษณะของการตดตอทาง network
• public TcpClient(IPEndPointlocalEP)พารามเตอร local คอ ก าหนด local ทจะใช
กบตวแปร TcpClientตวแปร localEPเปนชนด IPEndPoint
• public TcpClient(string hostname ,int port) พารามเตอร hostname คอตวแปร
ชนด integer เพอบอกวาเปน port หมายเลขอะไร ทตองการ connect
ฟงกชนทส าคญของคลาส TcpClientมมากมาย แตทส าคญแสดงในตาราง 2.15
ตารางท 2.15 ฟงกชนส าคญของคลาส TcpClient
� �
Connect()
Close()
GetStream() Stream Networkstream
2.10.2 คลาส TcpListener
ม Constructor 3 แบบคอ
• public TcpListener (int port) มพารามเตอร port ทตองการ listen ส าหรบการตดตอ
เขามา
28
• public TcpListener (IPEndPointlocalEP) พารามเตอรlocalEPคอ IPEndPoint
เพอทจะ bind คลายกบการใชงานฟงกชน Bind() ของคลาส Socket
• public TcpListener (IPAddresslocaladdr ,int port) พารามเตอรlocaladdrคอ ตว
แปรชนด IPAddressทแทน local IP address Port คอ หมายเลขของ Port ทตองการ listen
ส าหรบการตดตอเขามา ฟงกชนทส าคญของคลาส TcpListenerมมากมาย แตทส าคญแสดงใน
ตาราง 2.16
ตารางท 2.16 ฟงกชนส าคญของคลาส TcpListener
� �
Acceptsocket() Socket
AcceptTcpClient() client
Start() listen
Stop() listen
2.10.3 คลาส NetworkStream
คลาสนมฟงกชนมากมาย แตทส าคญแสดงในตาราง 2.17
ตารางท 2.17 ฟงกชนทส าคญของคลาส NetworkStream
� �
Read() Networkstream
Write() Networkstream
Close()
รายละเอยดฟงชน Read() รปแบบฟงกชน int Read (byte[] buffer,intoffset,int size)
พารามเตอร buffer คอ อาเรยชนด byte เปนตวแปรส าหรบรบขอมล offset คอ ต าแหนงเรมตน
ในตวแปร buffer ทจะรบขอมล Size คอ จ านวนขอมลทจะรบ คา Return จ านวนขอมลทรบมา
29
ไดเปน integer รายละเอยดของฟงกชน Write() รปแบบฟงกชน void write (byte [] buffer,
intoffset,int size) พารามเตอร buffer คอ อาเรยชนด byte ซงเกบขอมลทตองการสง offset คอ
ต าแหนงเรมตนในตวแปร buffer ทจะสงขอมล Size คอ จ านวนขอมลทจะสงไมมคา Return[4]
2.11 Windows Event Programing
สวนมากโปรแกรมเครอขายจะใชโหมดของคอนโซลใน .NET เปนหลก ซงวนโดวใน
โหมดคอนโซลจะใชเปนโมเดลโครงสรางของโปรแกรม โปรแกรมจะท างานตามตวควบคมทมอย
ในโปรแกรมนน ๆ ซงแตละเมธทอดทอยในคลาสจะถกเรยกใชโดยฟงกชนทโปรแกรมพบขณะ
ท างานในตอนประมวลผล ซงผใชงานจะไมสามารถเปลยนโปรแกรมทก าลงท างานไปเปนอยาง
อนไดนอกเหนอจากทไดก าหนดไว แตจะตรงกนขามกบโปรแกรมวนโดวทจะใชเปน event
programming model วนโดวอเวนทโปรแกรมจะท างานบนพนฐานของเหตการณเปนหลก เมอ
มเหตการณเกดขนในโปรแกรม เมธทอดเฉพาะจะถกเรยกใชงานและท างานกบเหตการณนน ๆ
ดงแสดงในรป 2.9 ซงการท างานแบบนไมเปนผลดกบฟงกชนเครอขายแบบ blocking เพราะ
เมอโปรแกรมถกเรยกใชงานและแสดงผลเปนกราฟฟกทางหนาจอเพอใหผใชงานใช มนจะรอ
เหตการณจากผใชงานทจะตดสนใจวาจะใหฟงกชนใดท างานดงนนอเวนทโปรแกรมจะสมมตวา
ฟงกชนอนอน ๆ ก าลงท างานและผใชงานจะยงคงควบคมผานกราฟฟกอนเทอเฟสอย การ
ท างานแบบนจะยอมใหผใชงานท างานกบฟงกชนอน ๆ ในขณะทรอการตอบกลบจากเครอขาย
หรอยกเลกการเชอมตอถาจ าเปน อยางไรกตามถาเราใชงานฟงกชน blocking โปรแกรมทจะ
ประมวลผลกจะรอจนกวาฟงกชนนนจะท างานเสรจและผใชงานกจะไปควบคมอนเทอเฟหรอไม
กโปรแกรมแทน
30
รปท 2.9 window event program
2.12 Using Events and Delegates
ในระบบโปรแกรม.NET จะมความคลายคลงกบระบบวนโดว ดงนนจงไมแปลกใจท
.NET จะรองรบโมเดลอเวนทโปรแกรม (event programming model) ใน .NET จะมโครงสราง
หลกอย 2 สวนคอ events กบ delegates Event คอขอความทสงโดยออฟเจคทแทนการท างาน
ในจดนน ๆ ขอความจะระบถงการท างานและขอมลทเกยวของกบการท างานนน ๆ โดย Event
สามารถเปนอะไรกไดจากผใชงานทกดปม (ขอความแทนดวยชอปม) หรอแพคเกจทรบขอมล
ทาง socket (ในทนขอความจะแทน socket ทรบขอมล) เหตการณตาง ๆ ผสงไมจ าเปนตองร
วาออฟเจดใดเปนตวจดการกบขอความเหตการณทสงไปผานระบบวนโดว มนจะขนกบ
เหตการณผรบไดลงทะเบยนกบระบบวนโดวและบอกใหรวาเปนเหตการณชนดใดทผรบตองการ
จะรบ (ในรป 2.10 แสดงฟงกชน demonstrates)
31
ซบเนตมารคส าหรบคลาส C มเลข 255 จ านวนสามชด คอ 255.255.255.0 หมายความวาใน
เครอขายนจะมไอพแอดเดรสสสามชดแรกทเหมอนกน เชน 192.168.1.11, 192.168.1.12,
192.168.1.13จงถอวาไอพแอดเดรสทงหมดนอยในเครอขายเดยวกน
รปท 2.10 demonstrates
เหตการณของผรบจะระบไวในระบบวนโดวโดยคลาสทเรยกวา delegate คลาส
delegate จะเกบตวอางองเมธทอดทใชในการจดการกบเหตการณทใชรบขอมล เมอวนโดว
ไดรบเหตการณใด ๆ มนจะไปตรวจสอบกบ delegate ทไดลงทะเบยนเอาไว ถาม delegate ท
ลงทะเบยนไวเพอจดการกบเหตการณนน ๆ มนจะสงผานไปยงเมธทอดทไดก าหนดไวใน
delegate และหลงจากทเมธทอดนนท างานเสรจโปรเซสของระบบวนโดวจะไปท าเหตการณ
ถดไปทพบจนกวาจะไดรบเหตการณการจบโปรแกรม[4]
32
2.13 The AsyncCallback Class
.NET จะเตรยมหนทางทท าใหเมธทอดกลายเปน delegate ได นนคอ .NET คลาส
AsyncCallback ทยอมใหเมธทอดเรมท างานฟงกชน asynchronous และรองรบการเรยกใชเมธ
ทอด delegate เมอฟงกชน asynchronous ท าส าเรจโพรเซสนจะตางจากโปรแกรมทว ๆ ไปใน
เรองของเหตการณทไมไดถกสรางมาจากออปเจควนโดว แตจะมาจากเมธทอดอน ๆ ใน
โปรแกรมแทน ซงเมธทอดนจะลงทะเบยนตวมนเองเปน AsyncCallback delegateไวเรยกใช
เมอเมธทอดท างานฟงกชนการเชอมตอเสรจ คลาส Socket จะใชประโยชนจากเมธทอดท
ก าหนดในAsyncCallbackเพอยอมใหฟงกชนเครอขายท างานแบบ asynchronously ในรปแบบ
โปรเซสแบคกราวด ซงสญญาณจะถกสงให OS เมอฟงกชนเครอขายมการเชอมตอสมบรณและ
ผานโปรแกรมควบคมไปยงเมธทอด AsyncCallbackหลงจากทการเชอมตอท าไดเสรจสนแลว
ในโปรแกรมแบบวนโดวเมธทอดเหลานจะชวยหลกเลยงเหตการณทจะเกดการลอกแอพพร
เคชนจากการรอใหฟงกชนเครอขายท าการเชอมตอใหส าเรจนนเอง[4]
2.14 Using Asynchronous Sockets
เมธทอด Asynchronous จะแบงออกเปนฟงกชนในโปรแกรมเครอขายได 2 สวนคอ
• เมธทอด Begin ส าหรบเรมฟงกชนเครอขายและลงทะเบยนกบเมธทอด
AsyncCallback
• เมธทอด End ส าหรบฟงกชนท างานเสรจสนเมอเมธทอดAsynCallback ถกเรยกใช
ตารางท 2.18 แสดงใหเหนเมธทอด asynchronous ทออปเจค socket สามารถใชไดซงแตละ
เมธทอด Begin จะสมพนธกบเมธทอด End เพอท าใหฟงกชนท างานไดสมบรณ
ตารางท 2.18 .Net asynchronous Socket methods
Requests Started
By…
Description of Request Requests Ended
BY…
BeginAccept() To accept an incoming connection EndAccept()
BeginConnect() To connect to a remote host EndConnect()
BeginReceive() To retrieve data from a socket EndReceive()
33
Requests Started
By…
Description of Request Requests Ended
BY…
BeginReceiveFrom() To retrieve data from a specific remote
host
EndReceiveFrom()
BeginSend() To send data from a socket EndSend()
BeginSendTo() To send data to a specific remote host EndSendTo()
เมธทอดเหลานใชประยกตไดกบsocket เทานน ใน .NETFramework release 1 ทง
คลาสTcpClient, TcpListenerและ UdpClient จะไมมเมธทอด asynchronous อย[4]
2.15 Establishing the Connection
เมธทอดทใชในการสรางการเชอมตอระหวางเครองจะขนกบโปรแกรมทท าหนาทเปน
เซรฟเวอร (คอรอใหไคลเอนทท าการเชอมตอเขามา) หรอ ไคลเอนท (ท าหนาทเชอมตอไปยง
เซรฟเวอร) ส าหรบเซรฟเวอร เมธทอดทใชคอ BeginAccept() และ ส าหรบไคลเอนทเมธทอดท
ใชคอ BeginConnect()
• The BeginAccept() and EndAccept()Methods เพอทจะรบการเชอมตอทเขามาจาก
ไคลเอนท เราจะตองใชเมธทอดBeginAccept() ทมรปแบบคอ
IAsyncResultBeginAccept (AsyncCallback callback, object state)
เมธทอด BeginAccept() จะมพารามเตอรสองตว คอ ชอของเมธทอดAsyncCallback ใชส าหรบ
ท าใหฟงกชนสมบรณ และ ออปเจคสถานะทว ๆ ไปทใชผานคาขอมลระหวางเมธทอด
Asynchronousโดยทวไปแลวเมธทอด BeginAccept() จะมรปแบบการใชงานดงรปท 2.11
รปท 2.11 รปแบบการใชงานเมธทอด BeginAccept()
34
โคดนเลก ๆ นท าการสรางออปเจค Socket และระบ local IP address และ TCP port
ใหเพอท าการรอรบการเชอมตอทจะมเขามา เมธทอด BeginAccept() จะอธบายถงเมธทอดทใช
งานเหมอน delegate เพอใชเมอตรวจเจอการเชอมตอกบ socket นน ๆและพารามเตอรตว
สดทายจะสงผานไปยงเมธทอด BeginAccept() ทเปนออปเจค socket ตนทถกสรางขนมา
หลงจากทเมธทอด BeginAccept() ท าเสรจเมธทอด AsyncCallback จะถกเรยกขนมาเมอมการ
เชอมตอเกดขน เมธทอด AsyncCallback จะมเมธทอด EndAccept() เพอใชจบการรบ socket
ดงนนรปแบบของเมธทอด EndAccept() คอ Socket EndAccept (IAsyncResultiar); ตวแปร
ออปเจค IAsyncResult จะสงคาของ IAsyncResult จากเมธทอด BeginAccept() ทเชอมโยงไป
ยงเมธทอด EndAccept() (นนกคอ เปนการสงคาระหวาง BeginAccept กบ EndAccept ทจบค
ตรงกน synchronous Accept() นนกคอ เมธทอด EndAccept() จะสงคาออปเจค Socket ทใช
ส าหรบสรางการเชอมตอใหมกบไคลเอนท ทกการสอสารกบไคลเอนทกจะท ากบออปเจคนเสมอ
ตวอยางเมธทอด EndAccept() เขยนเปนฟงกชนงาย ๆ ไดดงรป 2.12
รปท 2.12 รปแบบการใชงานเมธทอด EndAccept()
ชอของเมธทอด AsyncCallback จะตองตรงกบชอพารามเตอรทใชในเมธทอด
BeginAccept()ขนตอนแรกในเมธทอดกคอ การดง socket ของเซรฟเวอรตนทางมากอน ซง
การจะท าไดเราจะใชคณสมบต AsyncState ทเปนคณสมบตทอยในคลาส IAsyncResult
คณสมบตนจะสงผานออปเจคตนทางทอยในออปเจค BeginAcccept() เพราะวามนถกก าหนด
เหมอนเปนออปเจคทวๆไป หลงจากท Socket ถกดงคามาแลว เมธทอด EndAccept()
สามารถทจะหาออปเจค Socket ใหมส าหรบการเชอมตอไคลเอนได พารามเตอรออปเจค
IAsyncResult จะท าเหมอนกบผานคาไปยงเมธทอด AsyncCallback ออปเจคไคลเอนท socket
เมอสรางขนมาแลวอนหนงจะสามารถใชไดเหมอนกบออปเจค socket อนๆ นนกคอเปนไดทง
synchronous หรอ asynchronous ทจะอานและเขยนขอมลไปยง socket ในทายทสดแลวค
35
BeginAccept() / EndAccept() asynchronous กท างานไดผลเหมอนกบ เมธทอด Accept()
synchronous
•The BeginConnect() and EndConnect() Methods ส าหรบโปรแกรมไคลเอนททจะ
ท าการเชอมตอไปยงเซรฟเวอรทใชเมธทอด asynchronous เราจะตองใชเมธทอด
BeginConnect() ซงมรปแบบดงน
IAsyncResult BeginConnect(EndPoint ep, AsyncCallback callback, Object state)
พารามเตอรตวแรกทผานคาไปยงเมธทอด BeginConnect() คอคา EndPoint ของโฮสททจะท า
การเชอมตอไป และ ทเหมอนกบ BeginAccept() กคอ เมธทอด BeginConnect() จะมการระบ
ชอของเมธทอด AsyncCallback ทจะเรยกใชเมอการเชอมตอพรอมเสรจ และพารามเตอรตว
สดทายคอ สถานะของออปเจคทสามารถผานไปยงเมธทอด EndConnect() เพอพรอมทจะสง
ขอมลทจ าเปนได ตวอยาง BeginConnect() แสดงดงรป 2.13
รปท 2.13 รปแบบการใชงานเมธทอด BeginConnect()
ในโคดนเปนการสรางออปเจค Socket ชอ newsock และ IPEndPoint ชอ iep ส าหรบ
โฮสททจะเชอมตอ เมธทอด BeginConnect() จะอางองเมธทอด AsyncCallback (connected)
และผานออปเจค socket เรมตน กคอ newsock ไปยงเมธทอด AsyncCallback เมอการ
เชอมตอสมบรณ เมธทอด AsyncCallback ทถกก าหนดไวจะถกเรยกใชงาน และ เมธทอด
AsyncCallback จะใชเมธทอด EndConnect() เพอท าใหการเชอมตอเสรจสน รปแบบของ
เมธทอด EndConnect() คอ EndConnect (IAsyncResult iar) ตวอยางการใชเมธทอด
EndConnect แสดงดงรปท 2.14
36
รปท 2.14 รปแบบการใชงานเมธทอด EndConnect
ประโยคแรกในเมธทอด Asyncallback เปนการดงคา socket ตนทางทใชกบ
BeginConnect() เปนการใช คณสมบต AsyncState ของออปเจค IAsyncResult ผานคาไปยง
เมธทอด AsyncCallback socket ตนทางถกสรางขนมาใหมแลว เมธทอด EndConnect() จะถก
เรยกใชงาน โดยใชออปเจค IAsyncResult เพอชกลบไปยงเมธทอด BeginConnect() ตนทาง
เพราะวามความเปนไปไดทเครองปลายทางอาจจะไมพรอมใชงาน จงเปนการดถาเราจะวางเมธ
ทอด EndConnect() ไวทสวนของ Try-catch เพราะถาเมธทอด EndConnect() ท างานไมส าเรจ
มนกยงขามไปท าในสวนของ SocketException error
•The BeginSend() and EndSend() Methods เมธทอด BeginSend() จะสงขอมลไป
ยง socket ทเชอมตอ โดยมรปแบบการใชงานเมธทอดนดงน
IAsyncResult BeginSend( byte[] buffer, int offset, int size, SocketFlags
sockflag, AsyncCallback callback, object state)
ถาเรามองดมนจะมความคลายกบเมธทอด Synchronous Send() ซงถามาดแตละตว ตวแรก
byte[] buffer เปน ขนาด byte array ทเกบขอมลทเราตองการจะสง Offset เปนการชไปยง
ต าแหนงขอมลทอยใน buffer ซงเปนตวบอกวาขอมลเรมตนทไหน Size เปนการระบขนาด
byte จาก buffer ทจะสงไป Sockflag เปน flag เฉพาะทใชส าหรบเวลาเราตองการทจะเซตการ
สอสาร AsyncCallback และ state เปนเมธทอดทจะถกเรยกใชเมอ เมธทอด BeginSend() ท า
ส าเรจ และ state จะสงขอมลไปยงเมธทอด EndSend()ตวอยางเชน sock.BeginSend(data, 0,
data.Length, SocketFlags.None, new AsyncCallback(SendData), sock); ตวอยางนเปนการ
สงขอมล และ เรยกใชเมธทอด SendData() เมอ socket พรอมทจะสงขอมล และตวแปร sock
37
จะถกสงไปยงเมธทอด AsynCallback() เมธทอด EndSend() ใชสนสดการสงขอมล รปแบบ
ส าหรบเมธทอดนกคอ Int EndSend ( IAsyncResult iar) ซงตวแปร IAsyncResult ถก
ก าหนดใหเปนออปเจควาง ๆ ทจะอางถงผลของเมธทอด BeginSend() เมธทอด EndSend()
จะคนคาของจ านวนไบททสงจาก socket ไดส าเรจซงตวอยางของเมธทอด EndSend()
AsyncCallback แสดงดงรปท 2.14
รปท 2.15 รปแบบการใชงานเมธทอด EndSend()
•The BeginReceive() และ EndReceive() Methods เมธทอด BeginReceive() จะ
ยอมรบขอมลจากเครองปลายทางทอยใน socket เทานน โดยมรปแบบการใชงานเมธทอดคอ
IAsyncResult BeginReceive(byte[] buffer, int offset, int size, SocketFlags sockflag,
AsyncCallback callback, object state) ตวแปรตวแรกกคอ byte array ทใชรบขอมลทเขามา
Offset และ size ใชระบวาบพเฟอรเรมตจนทไหนและมขนาดบพเฟอรเทาไหร, Sockflags เปน
การก าหนด flag ส าหรบการสอสาร, callback และ state เปนตวแปรทเรายอมใหผานขอมลไป
ยงเมธทอด EndReceive()ตวอยางเชน sock.BeginReceive(data, 0, data.Length,
SocketFlags.None, new AsyncCallback(ReceivedData), sock); เมธทอด BeginReceive()
จะสง socket เรมตน ไปใหเมธทอด EndReceive() ดงนน มนจงสามารถสราง socket ใหมจาก
เมธทอด AsyncCallback เมธทอด AsyncCallback จะใช EndReceive() ตามตวอยางดงรปท
2.15
รปท 2.16 รปแบบการใชงานเมธทอด EndReceive()
38
บทท 3
การออกแบบระบบ
ระบบโปรแกรมควบคมผเรยนน จะใชชดพฒนาโปรแกรมไมโครซอฟทวชวลสตดโอ 2010 (Microsoft Visual Studio 2010) โดยเลอกใชชดพฒนาโปรแกรมยอยเปนไมโครซอฟวชวลซชารป 2010 (Microsoft Visual C# 2010) เปนเครองมอในการพฒนาโปรแกรม
3.1 คณสมบตทตองการใหโปรแกรมมและแนวคดในการพฒนา
โครงงานพฒนาโปรแกรมควบคมคอมพวเตอรผ เรยนตองการพฒนาใหเ ปนแอพพลเคชนวนโดว โดยมฟงกชนการท างานหลกๆ 3 ฟงกชน
Server
Client
รปท 3.1 แสดงฟงกชนหลกทโปรแกรมควบคมคอมพวเตอรผเรยนตองม
จากรปท 3.1 แสดงฟงกชนหลกทโปรแกรมควบคมคอมพวเตอรผเรยนตองม ไดแก
• โปรแกรมสามารถสงขอความไปหาเครองผเรยนไดทงหอง
• โปรแกรมสามารถปดการท างาน หนาจอ เมาส และคยบอรดของเครองผเรยนไดทงหอง และเมอตองการใหกลบมาใหงานไดตามปกตกสามารถท าได
• โปรแกรมสามารถปดเครองผเรยนไดทงหอง
39
ทง 3 ฟงกชนเปนฟงกชนในการสงขอความไปใหกลบเครองผเรยนทงหองปฏบตการคอมพวเตอรดงนนแพคเกตจะหายไมไดจงเลอกใชโพรโทคอลทซพ ในการพฒนาโปรแกรมโดยเลอกใชพอรต 5000 โดยมการสรางโพรโทคอลขอความ(Message Protocol) ทใชในการสงใหเกดกระบวนการตางๆ โพรโทคอลขอความและหนาทของโพรโทคอล แสดงในตาราง 3.1
ตารางท 3.1 แสดงชนดของขอความโพรโทคอลและหนาท
โพรโทคอล หนาท lip ท ากระบวนการลอคอปกรณอนพต
เมาส คยบอด เขาสโหมด ลอคออฟ ulip ยกเลกกระบวนการลอคอปกรณอนพต
เมาส คยบอด เขาสโหมด ลอคออฟ sd ท ากระบวนการปดเครอง(Shutdown) usd ยกเลกกระบวนการปดเครอง rs ท ากระบวนการรสตารทเครอง
(Restart)
เมอใชโพรโทคอลทซพมาพฒนาโปรแกรมควบคมคอมพวเตอรผเรยนทเปนแอพพลเคชนวนโดวตวโปรแกรมจะเกดกระบวนการบลอคคง (Blocking)ได และระบบเครองแมขายจะตองสามารถรองรบการเชอมตอจากเครองลกขายหลายๆ เครองได ดงนนแลวโปรแกรมการท างานจะตองวนรอรบการเชอมตอ แลวสรางทางเชอมตอใหกบเครองลกขายแตละเครองโดยใชหลกการของอะซงโครนส(Asynchronous)หรอเทรด(Thread)
connected
connected
connected
connected
connected
Server
Client1
Client5
Client4
Client3
Client2
Accept
Socket
start
Asynchronous ,Thread
รปท 3.2 แนวคดในการเชอมตอโดยใช Asynchronous
40
จากรป 3.2 เมอเครองลกขายเขามาเชอมตอจะไดเสนทางการเชอมตอทเปนของตวเอง แลวเกดการวนขนไปทข นตอนแอคเซป(Accept)อกเพอทจะสรางการเชอมตอกบเครองลกขายตวตอไป โดยการการใช Asynchronous เขามาชวย จงไมท าใหเกดการบลอคคง
3.2 โครงสรางโดยรวมของโครงงานโปรแกรมควบคมคอมพวเตอรผเรยน
โปรแกรมควบคมคอมพวเตอรผเรยนมโครงสรางโดยรวมทงระบบดงน
Create socket
bind Socket
listen on
Socket
Accept
Send
Receive
Close
Server Client
Create socket
Connect
Receive
Send
Close
Ip server, Port 5000
3 way handshake
- Message
-Message Protocol
-command
Ip, port
Countconnect
Connected
Show ip
port
Process-lockinput
-unlockinput
-Shutdown
-unShutdown
-Restart
Show count
number
รปท 3.3 แสดงโครงสรางโดยรวมของระบบ
41
จากรป 3.3 เรมทฝ งแมขายจะท าการสราง ซอคเกต โดยเปดพอรต 5000 คอยการเชอมตอ เมอมแพกเกต เขามาทางซอคเกตนพอรตน แนนอนกตองเปนเครองลกขายทเราไดก าหนดไอพแอดเดรสของเครองแมขายและเบอรพอรตไว กจะเกดการยอมรบ( Accept) ท าการสรางเสนทางเชอมตอกนระหวางเครองแมขายกบเครองลกขาย ในการเขามาเชอมตอของเครองลกขายจะมการเกบคาทเขามาเชอมตอวามกการเชอมตอ แลวจะเอาคาไปแสดงผล ใชเปนตวแทนของจ านวนเครองคอมพวเตอรลกขาย เมอมการสรางเสนทางเชอมตอเรยบรอยแลว เครองแมขายจะสงอะไรหาเครองลกขายกได ในระบบมการสงขอความ โพรโทคอลขอความ(Message Protocol) ซงเมอเครองลกขายไดรบกจะตความตาม โพรโทคอลขอความ ทไดตกลงกนไว แลวรนกระบวนการนน คอถาเปนขอความ lip กเรมกระบวนการลอคอปกรณอนพต ,ulip ท ากระบวนการยกเลกการลอคอปกรณอนพต,sd ท ากระบวนการปดเครอง(Shutdown) ,usd ท ากระบวนการยกเลกการปดเครอง ,rs ท ากระบวนการรสตารทเครอง ตอจากนนเมอเครองลกขายรบไดค าสงขอ ไอพแอดเดรส กบ พอรต กจะสงเบอรไอพแอดเดรส กบ พอรตกลบไปทเครองแมขายแสดงผล
3.3 ขนตอนการท างานทางดานเครอขาย
อธบายขนตอนการรบสงของโปรแกรมโดยน าเสนอเปนสวนๆ ของแตละฟงกชน
3.3.1 ฟงกชนในการสงขอความ
Server Client
Show in
listbox
Connect
3 way handshake
Welcome,RemoteEndpoint
Student connect : ip,port
Chat message
Chat message
Chat message
รปท 3.4 แสดงขนตอนการท างานทางดานเครอขายของฟงกชนสงขอความ
42
จากรป 3.4 เมอเครองแมขายกบลกขายไดเชอมตอกนแลวเครองแมขายจะสงขอความ Welcome ไปใหกบเครองลกขาย พรอมค าสงขอหมายเลขไอพแอดเดรสและเบอรพอรตของเครองลกขาย เครองลกขายจะสงขอความ Student Connect พรอมหมายเลขไอพแอดเดรสและเบอรพอรตมาแสดงททางฝ งแมขาย จากนนเครองแมขายจะสงขอความ(Chat message )หาเครองลกขายซงเปนการสอสารทางเดยว
3.3.2 ฟงกชนการลอคอปกรณอนพตเครองคอมพวเตอรผเรยน
Server Client
Process
lock
Connect
Welcome,RemoteEndpoint
Student connect : ip,port
lip
3 way handshake
รปท 3.5 แสดงขนตอนการท างานทางดานเครอขายของฟงกชนลอกอปกรณอนพตผเรยน
จากรป 3.5 เมอเครองแมขายกบลกขายไดเชอมตอกนแลวเครองแมขายจะสงขอความ Welcome ไปใหกบเครองลกขาย พรอมค าสงขอหมายเลขไอพแอดเดรสและเบอรพอรตของเครองลกขาย เครองลกขายจะสงขอความ Student Connect พรอมหมายเลขไอพแอดเดรสและเบอรพอรตมาแสดงททางฝ งแมขาย จากนนเครองแมขายจะสงโพรโทคอลขอความ lip หาเครองลกขายเมอเครองลกขายไดรบตรวจสอบเงอนไข แลวกรนโปรเซสของการลอคอนพตเครองผเรยนโดยการ เขาสโหมดลอคออฟ(lock off)แลวปดการใชงานเมาสกบคยบอรดไมใหสามารถใชงานได
43
3.3.3 ฟงกชนการปลดลอคอปกรณอนพตเครองคอมพวเตอรผเรยน
Server Client
Process
unlock
Connect
Welcome,RemoteEndpoint
Student connect : ip,port
ulip
3 way handshake
รปท 3.6 แสดงขนตอนการท างานทางดานเครอขายของฟงกชนปลดลอกอปกรณอนพต
จากรป 3.6 เมอเครองแมขายกบลกขายไดเชอมตอกนแลว เครองแมขายจะสงขอความ Welcome ไปใหกบเครองลกขาย พรอมค าสงขอหมายเลขไอพแอดเดรสและเบอรพอรตของเครองลกขาย เครองลกขายจะสงขอความ Student Connect พรอมหมายเลขไอพแอดเดรสและเบอรพอรตมาแสดงททางฝ งแมขาย จากนนเครองแมขายจะสงโพรโทคอลขอความ ulip หาเครองลกขายเมอเครองลกขายไดรบตรวจสอบเงอนไข แลวกรนโปรเซสของการปลดลอคอนพตเครองผเรยนโดยการ ปลดลอคเมาสกบคยบอรดใหสามารถใชงานไดตามปกต
44
3.3.4 ฟงกชนการปดเครอง(shutdown)คอมพวเตอรผเรยน
Server Client
Process
shutdown
Connect
Welcome,RemoteEndpoint
Student connect : ip,port
sd
3 way handshake
รปท 3.7 แสดงขนตอนการท างานทางดานเครอขายของฟงกชนปดเครองคอมพวเตอรผเรยน
จากรป 3.7 เมอเครองแมขายกบลกขายไดเชอมตอกนแลวเครองแมขายจะสงขอความ Welcome ไปใหกบเครองลกขาย พรอมค าสงขอหมายเลขไอพแอดเดรสและเบอรพอรตของเครองลกขาย เครองลกขายจะสงขอความ Student Connect พรอมหมายเลขไอพแอดเดรสและเบอรพอรตมาแสดงททางฝ งแมขาย จากนนเครองแมขายจะสงโพรโทคอลขอความ sd หาเครองลกขายเมอเครองลกขายไดรบตรวจสอบเงอนไข แลวกรนโปรเซสของการปดเครองโดยจะมการนบถอยนบกอนการปดเครอง 30 วนาท
45
3.3.5 ฟงกชนการยกเลกปดเครอง(cancel shutdown)คอมพวเตอรผเรยน
Server Client
Process
unshutdown
Connect
Welcome,RemoteEndpoint
Student connect : ip,port
usd
3 way handshake
รปท 3.8 แสดงขนตอนการท างานทางดานเครอขายของฟงกชนปดเครองคอมพวเตอรผเรยน
จากรป 3.8 เมอเครองแมขายกบลกขายไดเชอมตอกนแลวเครองแมขายจะสงขอความ Welcome ไปใหกบเครองลกขาย พรอมค าสงขอหมายเลขไอพแอดเดรสและเบอรพอรตของเครองลกขาย เครองลกขายจะสงขอความ Student Connect พรอมหมายเลขไอพแอดเดรสและเบอรพอรตมาแสดงททางฝ งแมขาย จากนนเครองแมขายจะสงโพรโทคอลขอความ usd หาเครองลกขายเมอเครองลกขายไดรบตรวจสอบเงอนไข แลวกรนโปรเซสของการยกเลกปดเครองคอมพวเตอรผเรยน
46
3.3.6 ฟงกชนการรสตารทเครองคอมพวเตอรผเรยน
Server Client
Process
restart
Connect
Welcome,RemoteEndpoint
Student connect : ip,port
rs
3 way handshake
รปท 3.9 แสดงขนตอนการท างานทางดานเครอขายของฟงกชนรสตารทเครองผเรยน
จากรป 3.9 เมอเครองแมขายกบลกขายไดเชอมตอกนแลวเครองแมขายจะสงขอความ Welcome ไปใหกบเครองลกขาย พรอมค าสงขอหมายเลขไอพแอดเดรสและเบอรพอรตของเครองลกขาย เครองลกขายจะสงขอความ Student Connect พรอมหมายเลขไอพแอดเดรสและเบอรพอรตมาแสดงททางฝ งแมขาย จากนนเครองแมขายจะสงโพรโทคอลขอความ rs หาเครองลกขายเมอเครองลกขายไดรบตรวจสอบเงอนไข แลวกรนโปรเซสของการรสตารทเครองคอมพวเตอรผเรยน
47
3.4 ออกแบบหนาตาของโปรแกรมควบคมคอมพวเตอรผเรยน
3.4.1 ฝงแมขาย
รปท 3.10 หนาตาโปรแกรมควบคมผเรยนฝงแมขาย
จากรป 3.10 เปนหนาตาของโปรแกรมควบคมผเรยนฝ งแมขายหมายเลข 1คอ textbox หมายเลข 2 คอ listbox หมายเลข 3 คอ label โดยมปมเปน button
3.4.2 หนาตาโปรแกรมของทางฝงเครองลกขาย
รปท 3.11 หนาตาโปรแกรมควบคมผเรยนฝงลกขาย
จากรป 3.11 เปนหนาตาของโปรแกรมควบคมผเรยนฝ งลกขายหมายเลข 2 คอ
listbox โดยมปมเปน button
48
บทท 4 ผลการทดลอง
4.1 สภาพแวดลอมทใชส าหรบการทดลอง
เครองแมขายทเปนเครองของครลงโปรแกรมทใชควบคม 1 เครอง สวนเครองนกเรยน 40 เครองลงโปรแกรมทเปนตวเอเจนต(Agent)
Server
Client1,
agent
Client2,
agent
Client3,
agent
Client n,
agent
รปท 4.1 แสดงภาพรวมของหองปฏบตการคอมพวเตอร
จากรปท 4.1 แสดงภาพรวมของหองปฏบตการคอมพวเตอร ทม รายละเอยดโครงสรางของระบบเครอขายภายในหองปฏบตการดงน
•เปนระบบเครอขายทใชโครงสรางแบบดาว (Star Topology)
•ใชมาตรฐานการท างานแบบอเทอรเนต (Ethernet)
•มความเรวในการรบสงขอมลสงสดอยท 1,000 เมกะบตตอวนาท
•ใชสายยทพ (UTP) ชนด CAT 5 Enhanced
•มสวตซทรองรบความเรวในการรบสงขอมล 1,000 เมกะบตตอวนาท
49
•ใชการดเนตเวรก (Network Interface Card) ทรองรบความเรวในการรบสงขอมล 1,000 เมกะบตตอวนาท
•ระบบปฏบตการเปน ระบบปฏบตการวนโดวสเอกซพ (Window XP) ทงหมด
4.2 วธและผลการทดลอง
4.2.1 เรมเปดโปรแกรม
ใหท าการเปดโปรแกรมควบคมผเรยนทเครองแมขายกอนแลวกดปม Start
รปท 4.2 แสดงการเรมโปรแกรมของเครองแมขาย
จากรป 4.2 เมอกดปมสตารท โปรแกรมจะเรมท างานปมสตารท(Start)จะจางไป และท
ชอง Active hosts Students ยงมคาเปนศนยเนองจากเครองผเรยนยงไมมการเปดเครอง
รปท 4.3 แสดงการนบจ านวนเครองลกขายทเขามาเชอมตอ
50
จากรป 4.3 แสดงวาในขณะนมเครองคอมพวเตอรผเรยนเปดอย 40 เครองนนกคอ
จ านวนของเครองคอมพวเตอรทเปดอยในหองเรยน แลวยงแสดงเบอรไอพแอดเดรส และเบอร
พอรตดวย
รปท 4.4 แสดงขอความ Welcome ทโปรแกรมเครองผเรยน
จากรป 4.4 ทางฝ งเครองผเรยนเมอเปดโปรแกรมวนโดวสโปรแกรมทเปนตวแทน
(agent)จะเปดขนมาโดยอตโนมต และจะมขอความ WelCome…..เปนการพสจนวาการเชอมตอ
ไดเกดขนแลว เมอมขอความสงมามากผเรยนสามารถลบขอความทมการสงมาไดโดยการกดปม
Clear
รปท 4.5 โปรแกรมเครองผเรยนไมสามารถเชอมตอกบเครองควบคมได
จากรปท 4.5 ถาโปรแกรมทางฝ งผเรยนไมสามารถเชอมตอกบเครองควบคมไดจะขน
ขอความแจงเตอน Can’t connect to Server ผเรยนสามารถปดโดยการกดปม ok
51
รปท 4.6 แสดง กระบวนการเกด 3 way handshake ท Port 5000
จากรปท 4.6 เมอใชโปรแกรม wireshark ดกจบแพคเกจจะเหนวาไดเกดกระบวนการ 3
way handshake ท Port 5000
4.2.1 ทดสอบฟงกชนการสงขอความ
เมอฝ งแมขายตองการสงขอความไปใหกบเครองผเรยนจะพมพขอความทชอง Enter
Text String
รปท 4.7 แสดงฟงกชนการขอความไปใหกบเครองผเรยน
52
จากรปท 4.7 ทดลองพมพค าวา hello สวสด แลวกดปม Send เมอกดปม Send แลว
ขอความทพมพในชอง Enter text string จะหายไป
รปท 4.8 แสดงขอความทเกดขนทชอง Teacher message
จากรปท 4.8 เมอกดปม Send จะมขอความของความวา My message : hello สวสด
ขนทชอง Teacher message เพอเปนการแจงวาในขณะนนทเครองควบคมไดสงขอความอะไร
ออกไปใหกบเครองผเรยน
รปท 4.9 แสดงขอความทเครองลกขายไดรบ
53
จากรปท 4.9 ทางเครองผเรยนจะไดรบขอความวา hello สวสด ทชอง Result from
Teacher
4.2.2 ทดสอบฟงกชนปดอปกรณอนพตเครองผเรยน
โปรแกรมทางเครองควบคมจะมฟงกชนปดการท างานของอปกรณอนพต ไดแก หนาจอ
เมาส คยบอรด ของผเรยนไมใหสามารถใชงานได
รปท 4.10 แสดงการทดสอบฟงกชนการปดอปกรณอนพตเครองผเรยน
รปท 4.10 ถาจะใชฟงกชนการปดอปกรณอนพตเครองผเรยน กใหกดปม lock ในสวน
ของ Lock input Student
รปท 4.11 แสดงผลทเกดกบเครองลกขายเมอใชฟงกชนลอกอปกรณอนพตเครองผเรยน
54
จากรปท 4.11 เครองคอมพวเตอรผเรยนจะเขาสโหมด ลอคออฟ และ เมาส กบ
คยบอรด จะไมสามารถใชงานได
รปท 4.12 แสดงการใชงานฟงกชนปลดลอกอปกรณอนพตเครองผเรยน
จากรปท 4.12 เมอเครองควบคมตองการใหเครองผเรยนสามารถใชงานอปกรณอนพต
ไดตามปกตกสามารถท าไดโดยการกดปม unlock ทตวโปรแกรมควบคม เครองผเรยนกจะ
สามารถใชงานเมาส กบ คยบอรด ไดตามปกต
4.2.3 ทดสอบฟงกชนปดหรอรสตารทเครองคอมพวเตอรผเรยน
เมอตองการใชงานฟงกชนปดเครองผเรยนทเปดเครองทงไว
รปท 4.13 แสดงการใชงานฟงกชนปดเครองผเรยน
55
จากรปท 4.13 ใหกดปม shutdown ในสวนของ Shutdown Student
รปท 4.14 แสดงการใชงานฟงกชนปดเครองผเรยน
จากรปท 4.14 เครองผเรยนจะเรมปดเครองโดยจะนบถอยหลง 30 วนาทกอนจะปด
รปท 4.15 แสดงฟงกชนการยกเลกการปดเครองผเรยน
56
จากรปท 4.15 ภายใน 30 วนาทนถาตองการยกเลกการปดเครองกสามารถท าไดโดย
การกดทปม cancel shutdown
รปท 4.16 แสดงฟงกชนการรสตารทเครองผเรยน
จากรปท 4.16 แตถาเครองควบคมตองการรสตารทเครองผเรยนกสามารถท าไดโดย
การกดปม Restart ในสวนของ Shutdown Student เครองผเรยนกจะท าการปดเครองภายใน
30 วนาท แลวจะเปดเครองขนมาใหม
4.3 สรปผลการทดลอง
จากการทไดทดลองโปรแกรมควบคมเครองผเรยน พบวา
•โปรแกรมสามารถ สงขอความ ไปทเครองผเรยนไดทงหองจ านวน 40 เครองได
•โปรแกรมสามารถ ท าการปดการใชงานหนาจอ เมาส กบ คยบอรด คอมพวเตอรของผเรยนได และสามารถสงค าสงท าใหสามารถกบมาใชงานไดตามปกตได
•โปรแกรมสามารถมองเหนวาเมอหมดคาบเรยนแลวเครองคอมพวเตอรของผเรยนเครองใดยงไมปด แลวสามารถสงสงปดเครองท าใหเครองทเปดอยปดเครองได
จงแสดงไดวาโครงงานนประสบผลส าเรจตามจดมงหมายทไดก าหนดไว
57
บทท 5
สรปผลโครงงาน
5.1 ขอสรปผลการด าเนนงาน ในการศกษาโครงงานนผจดท าไดศกษารวบรวบขอมลทเกยวของ ออกแบบระบบการท างานของโปรแกรม ด าเนนงานเขยนโปรแกรม และพฒนาปรบปรงโปรแกรมเพอใหสามารถใชใหเกดประโยชนจรงๆ กบการเรยนการสอนในหองปฏบตการคอมพวเตอร ท าใหผจดท ามความรเกยวกบการเขยนโปรแกรมในการสอสารขอมลระหวางเครองแมขายและเครองลกข ายเพมมากขน สามารถลดการอตราการแอบเลนเกม หรอ อนเตอรเนต ท าใหผเรยนมสมาธในการเรยนเพมมากขน ชวยในเรองประสทธภาพในการเรยนการสอนไดจรง ชวงทายคาบอาจารยไมตองเดนส ารวจและปดเครองคอมพวเตอรเองทละเครองได และยงชวยลดคาใชจายในการทโรงเรยนตองจดซอโปรแกรมประเภทนมาใชงาน และคาใชจายในการซอมบ ารงคอมพวเตอรทเกดจากการตดกระแสไฟฟา
5.2 ปญหาและอปสรรคการด าเนนงาน จากการไดท าการศกษา และลงมอพฒนาโปรแกรมควบคมผเรยน ตวโปรแกรมตองใชความเขาในหลายๆ ดาน ทงดาน Network Programming ,ฟงกชนตางๆทเกยวของกบตววนโดว รวมทงตองศกษาการใชภาษา C# ทใชในการพฒนาโปรแกรมอก ท าใหการพฒนาเกดความลาชา และท าใหมปญหาของโปรแกรมบางจดทคาดไมถง 5.3 แนวทางในการพฒนาตอ
เขยนพฒนาใหมฟงกชนการใชงานทเพมมากขน เชน การปดการใชงานยเอสบ การ
บลอกเวบ การรโมท การสงไฟลเปนตนและตรวจสอบแกไขปญหาของโปรแกรมทมอยใหมนอย
ทสด
58
เอกสารอางอง
[1] จตชย แพงจนทร, “เจ าะระบบ Network 2nd Edition” พมพครงท1 นนทบร : ไอดซฯ, 2551
[2] พศาล พทยาธรวฒน , “ตดตงระบบเครอขายคอมพวเตอร Internet/Intranet ฉบบผเรมตน”,
ซเอดยเคชน จ ากด,พ.ศ.2551
[3] ผศ.ดร.ประวทย ชมช , “เครอขายไรสายและเคลอนท” ภาควชาวศวกรรมโทรคมนาคม
มหาวทยาลยมหานคร,พ.ศ.2553
[4] Richard Blum, “ C# Network Programming ”,SYBEX Inc.2003
[5] Fiach Reid, “Network Programming in.Net with C# and Visual Basic.Net”,Elsevier
Digital Press,2004
59
ภาคผนวก ก
วธตดตงโปรแกรมควบคมคอมพวเตอรผเรยน
60
วธตดตงโปรแกรมควบคมคอมพวเตอรผเรยนฝงแมขาย(Server)
ตดตงโปรแกรมทเครองของครผสอนโดยในการตดตงโปรแกรมด าเนนการดงน
1. ใหน าไอคอน Teacher.exe วางไวทหนาจอ(Desktop)ของเครองคอมพวเตอร
2. ใหดบเบลคลก icon Teacher.exe เพอเปนการเปดโปรแกรมกจะปรากฏตว
โปรแกรมควบคมดงรป
รปท ก.1 หนาจอโปรแกรมควบคมคอมพวเตอรผเรยนฝ งควบคม
61
วธตดตงโปรแกรมควบคมคอมพวเตอรผเรยนฝงลกขาย(agent)
ตดตงโปรแกรมทเครองผเรยนโดยในการตดตงโปรแกรมด าเนนการดงน
1. ใหน าไอคอน Student.exe วางไวท Startup Windows คอไปท start All Program
Startup
รปท ก.2 การตดตงโปรแกรมควบคมคอมพวเตอรผเรยนฝ งลกขาย
62
2. เมอเปดเครองคอมพวเตอรโปรแกรมจะเปดขนมาโดยอตโนมต
รปท ก.3 หนาจอโปรแกรมควบคมคอมพวเตอรผเรยนฝ งลกขาย
63
ภาคผนวก ข
คมอการใชงานโปรแกรมควบคมคอมพวเตอรผเรยน
64
คมอคมอการใชงานโปรแกรมควบคมคอมพวเตอรผเรยน
โปรแกรมควบคมคอมพวเตอรผเรยน 3 สวน คอ Send Message ,Lock Input และ
Shutdown โดยแตละสวนท างานดงน
1. ขนตอนการใชงาน Send Message
โปรแกรมจะสามารถสงขอความใด ใหกบเครองผเรยนไดโดยการสงขอความนจะเปน
การสอสารขางเดยว เครองผเรยนไมสามารถสงขอความมาหาเครองครได และในการ
สงขอความนจะเปนการสงขอความใหกบเครองผเรยนทงหอง
2. ขนตอนการใชงาน Lock Input
โปรแกรมจะสามารถสงค าสงลอคเครองคอมพวเตอรของผเรยน โดยสงใหหนาจอเขาส
โหมดลอคออฟ และปดการท างานของเมาส กบ คยบอรดไมใหสามารถใชงานไดโดย
การสงโพรโทคอล lip แตเมอตองการใหเครองผเรยนสามารถกลบมาใชงานไดตามปกต
กสามารถท าไดโดยการสงโพรโทคอล ulip เครองผเรยนกจะสามารถกลบมาใชงานได
ตามปกต
3. ขนตอนการใชงาน Shutdown
โปรแกรมจะสามารถสงค าสงปดเครองหรอรสตารทเครองผเรยนไดทงหองโดยการสง
โพรโทคอล sd เมอตองตองปดเครอง และสงโพรโทคอล rs เมอตองการรสตารทเครอง
ผเรยน
ขนตอนการใชงานโปรแกรม
•ขนตอนการสตารทโปรแกรม กดปม Star ในสวนของ Start Server
รปท ข.1 เรมสตารทโปรแกรมควบคมคอมพวเตอรผเรยน
65
•ขนตอนการสงขอความ พมพขอความทตองการจะสงใหกบเครองผเรยนทชอง Enter text
string แลว กด Send
รปท ข.2 การใชงานฟงกชนสงขอความ
•ขนตอนการใชงานฟงกชนลอคเครองคอมพวเตอรของผเรยนใหกดทปม lock ในสวนของ Lock input Student
รปท ข.3 ขนตอนการใชงานฟงกชนลอคเครองคอมพวเตอรของผเรยน
66
•ขนตอนการใชงานฟงกชนปลดลอคเครองคอมพวเตอรของผเรยนใหกดทปม unlock ในสวนของ Lock input Student
รปท ข.4 ขนตอนการใชงานฟงกชนปลดลอคเครองคอมพวเตอรของผเรยน
•ขนตอนการใชงานฟงกชนปดเครองคอมพวเตอรของผเรยนใหกดทปม Shutdown ในสวนของ Shutdown Student
รปท ข.4 ขนตอนการใชงานฟงกชนปดเครองคอมพวเตอรของผเรยน
67
•ขนตอนการใชงานฟงกชนยกปดเครองคอมพวเตอรของผเรยนใหกดทปม Cancel Shutdown ในสวนของ Shutdown Student
รปท ข.5 ขนตอนการใชงานฟงกชนยกปดเครองคอมพวเตอรของผเรยน
•ขนตอนการใชงานฟงกชนรสตารทเครองคอมพวเตอรของผเรยนใหกดทปม Restart ในสวนของ Shutdown Student
รปท ข.6 ขนตอนการใชงานฟงกชนรสตารทเครองคอมพวเตอรของผเรยน