หน้าแรก
 การบ้าน
  C/C++ new
  Java new
 Sourcecode.TV
  Android
  Blackberry
  C/C++
  Java
  Linux
  Windows Phone
  แจ้งเรื่องที่ต้องการ
 บทความ
  .NET
  Android
  Blackberry
  C++Builder
  Delphi
  Java
  Mobile
  Open Source
  Pocket PC
  Visual Basic
  Web
  Windows Phone
  Others
 แบบเรียนฟรี
  ASP
  ASP.NET Webmatrix
  C++
  eVB
  J2ME
  Java
  PHP
 ซอร์สโค้ด
  Android
  ASP
  C++
  VC++
  CGI-Perl
  Delphi
  Java
  jQuery
  PHP
  Visual Basic
  .NET
 บริการจากเรา
  เปิดท้าย... ขายโค้ด
  DoodeeHosting
  รับออกแบบ พัฒนาเว็บไซต์
  Freeware
  อัตราค่าโฆษณา
  รายชื่อลูกค้า
  สถิติผู้เข้าเว็บ
 ดาว์นโหลด
 ค้นหาข้อมูล
 กระดานสนทนา
  .NET
  C/C++
  Delphi
  Java
  Palm/PocketPC
  Visual Basic
  Web
  อื่นๆ
 กระดานงาน
 ลิงค์เว็บ
 เกี่ยวกับผม
 อัตราค่าโฆษณา
Social Network

Facebook  Twitter  YouTube
 New Article
 Webboard
 Freelanceboard
Freeware
โปรแกรมเบอร์ดี (BerDee)
โปรแกรมเบอร์ดี (Android)
เกมส์เป่ายิ้งฉุบ
เกมส์เป่ายิ้งฉุบ(Android)
WebcamMonitor
WebcamMonitor(Windows)
scSendMail
scSendMail(Windows)
MSN Caption
MSN Caption(Windows)
  Freelance comment
  ติดต่อสอบถามมาได้ตลอดนะครับ...
2015-07-29 13:35:58
  ถ้าผมต้องการเว็บที่พัฒนาด้วย HTML5 ...
2015-01-18 15:33:54
  ถ้าผมต้องการเว็บที่พัฒนาด้วย HTML5 ...
2015-01-18 15:32:51
  ติดต่อสอบถามเข้ามาได้นะคับ
งานเล...

2014-01-06 12:47:38
  ถ้ายังหาคนสอนไม่ได้ ก็ลองศึกษาเองได...
2013-07-06 01:04:37
  สนใจส่งขอบเขตมาคุยราคาก่อนได้นะคับ...
2013-03-24 18:54:20
  ถ้ายังไม่มีคนรับงานติดต่อได้ครับ 08...
2012-12-16 19:18:14
  สนใจคะ ติดต่อ 0905076277...
2012-11-12 11:07:46
  รับทำโปรเจ็คนักศึกษาหรือบริษัท
ส...

2012-10-29 03:10:46
  sukit_te34@hotmail.com...
2012-10-29 03:09:36
  Webboard comment
  ผมลอง gotoxy แล้วแต่ก็ยังเอ...
2017-08-28 11:45:52
  ลองสร้างตัวแปลอีกตัวไว้ใน u...
2017-08-27 20:09:01
  #define GLUT_DISABLE_ATEXIT...
2017-08-27 12:53:17
  ผมมีคลิปสอนให้แล้ว ดูให้เข้...
2017-08-27 10:50:02
  รับ สอน matlab เขียน matlab...
2017-06-03 16:27:23
  เฉพาะทางขนาดนี้ คงต้องดูหาข...
2017-05-25 16:18:08
  โห เครื่องรุ่นไหนครับ os รุ...
2017-05-25 16:12:47
  ถ้าเขียน php ก็ใช้ curl ส่...
2017-04-20 01:04:20
  เขียนโค้ดไม่เป็น เอาโค้ดไป ...
2017-03-27 12:50:54
  คือสงสัยว่าทำไม ต้องอัพเดทด...
2017-03-27 12:37:20
  Homework comment
  ขอบคุณมากครับ...
2017-08-16 18:27:25
  ทำเอง งง เอง กะลังทำใหม่ค่ะ ^^...
2017-04-18 18:40:46
  ทำเอง งง เอง กะลังทำใหม่ค่ะ ^^...
2017-04-18 18:37:54
  ประเด็นแรก flowchart มันไม่มีภ...
2017-04-18 17:43:33
  อยากได้ flowchart ค่ะ เป็นภาษา...
2017-04-18 16:25:29
  kungking คำถามคืออะไรครับ ?...
2017-03-18 23:28:36
  จงเขียนโปรแกรมแสดงผลรวมของตัวเ...
2017-03-06 10:56:25
  ก็โค้ดทำงานคล้ายๆแบบนี้หละ แต่...
2016-09-06 01:00:12
  ผมอยากทราบว่าโค้ดนับถอยหลังเป็...
2016-09-05 09:31:27
  ได้โค้ดแล้ว ลองศึกษาแล้วเขียนผ...
2016-04-22 00:47:49
  Article comment
  มีcode ของ VB ไหมค่ะ ถ้ามีรบกว...
2017-09-28 16:50:02
  น่าจะได้ครับ ไม่เคยลอง
กล่...

2017-07-11 09:59:35
  สามารถใช้ต่อกับ anycast ได้ไหม...
2017-07-05 10:12:35
  ครับ คุณ "ติด" แล้วลองนึกต่อว่...
2016-06-18 15:21:09
  vs2008 c# ครับ ขอบคุณครับ...
2016-06-17 14:39:30
  ผมใช้ vs c# ทำตามทุขั้นตอนแต่ต...
2016-06-17 14:37:44
  ต้องวิเคราะห์ครับ "ว่าจริงๆ ส่...
2016-03-12 23:36:05
  ผมส่งข้อความในวง LAN ได้เฉพาะค...
2016-03-12 18:25:42
  โปรแกรม Terminal บน Mac ก็เป็น...
2016-02-16 11:02:01
  โปรแกรม Terminal คืออะไรหรอคะ...
2016-02-16 05:58:21
  9Mcode comment
  อยากได้...
2014-02-21 08:52:19

Link Exchange

อัตราค่าโฆษณา
Statistics of Sourcecode in Thailand
 
โปรแกรม Daytime (ตัวอย่างการใช้ Winsock Control) (อ่าน 17,194)
ศุภกิจ ทองดี (9'M) บทความโดย: นาย ศุภกิจ ทองดี (9'M)
e-mail: webmaster@sourcecode.in.th
mobile: 09-5009-5351
Line: suppakit.thongdee
Youtube: 9Mcode
Fanpage: Sourcecode.in.th
   
: ดาว์นโหลดตัวอย่างโปรแกรม (ดาว์นโหลด 4,517 ครั้ง)

- - - - - - - - - - - - - - ผู้ให้การสนับสนุน- - - - - - - - - - - - - -

 
 
Freelanceรับพัฒนาโปรแกรม และเว็บ โดย 9'M 

บทความต่อไปนี้ เป็นโปรแกรมตัวอย่างการใช้งาน Winsock Control (วินซ็อกคอนโทรล) ซึ่งเป็น คอนโทรลที่ใช้สำหรับการเขียนโปรแกรมบนอินเทอร์เน็ต โปรแกรม Daytime นี้จะใช้โปรโตคอล DAYTIME ในการที่จะรับเอาค่าวัน และ เวลา จากเครื่องเซิร์ฟเวอร์ที่คุณต้องการ โดยที่ไคลเอนต์จะต้องทำการติดต่อกับเซิร์ฟเวอร์ผ่านทางพอร์ต หมายเลข 13 เมื่อได้ทำการติดต่อ แบบโปรโตคอล DAYTIME แล้วเซิร์ฟเวอร์ก็จะส่งค่าตัวอักษร ที่ประกอบด้วยวันและเวลา ไปยังไคลเอนต์

เริ่มต้นด้วยการสร้างโปรเจ็กใหม่ (Standard EXE) ซึ่งโปรแกรมจะสร้างฟอร์มให้ 1 ฟอร์ม โดยอัตโนมัติ ทำการเพิ่มวินช็อกคอนโทรล (กด Ctrl-T) ลาก และ วางคอนโทรลไว้บนฟอร์ม ส่วนคอนโทรลอื่นที่จะใช้ จะแสดงดังภาพด้านล่างนี้

หลังจากนั้น ให้เปิดหน้าต่างโค้ดเพิ่มโค้ดต่อไปนี้ลงไป

Private Sub cmdCancel_Click()

    Unload Me

End Sub

Private Sub cmdConnect_Click()

    txtDateTime = ""
    Winsock1.Connect Trim$(txtRemoteHost), 13

End Sub

Private Sub Form_Load()

    txtRemoteHost = ""
    txtDateTime = ""

End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)

    Dim strData As String
    
    Winsock1.GetData strData, vbString
    txtDateTime = txtDateTime & Trim$(strData)
    
End Sub

Private Sub Winsock1_Error(ByVal Number As Integer,
_
                          
Description As String, _
                           ByVal Scode As Long,
_
                           
ByVal Source As String, _
                          
ByVal HelpFile As String, _
                           
ByVal HelpContext As Long, _
                           CancelDisplay As Boolean)

    MsgBox "Winsock Error: " & Number & vbCrLf & _
            Description, vbInformation

End Sub

เอาละครับ.. ต่อไปผมจะอธิบายโค้ดข้างต้นที่ได้พิมพ์เข้าไป เมื่อผู้ใช้ทำการใส่ชื่อของเซิร์ฟเวอร์ ลงในช่อง Remote Host แล้วทำการคลิกปุ่ม Connect โปรแกรมก็จะทำงานตามอีเวนต์ cmdConnect_Click ซึ่งมีคำสั่งที่สำคัญ คือ

Winsock1.Connect Trim$(txtRemoteHost), 13 

คุณจะเห็นได้ว่า โปรแกรมจะใช้เมธอด Connect ของวินซ็อกคอนโทรล ทำการติดต่อกับ เซิร์ฟเวอร์ที่ต้องการ ผ่านทางพอร์ต หมายเลข 13 ถ้าในขณะนั้น service (เซอร์วิซ) Daytime ของ เซิร์ฟเวอร์ให้บริการอยู่ มันก็จะ รับคำร้องขอที่เข้ามาจากไคลเอนต์, ตอบสนองข้อมูลให้กับไคลเอนต์ แล้วทำการตัดการติดต่อ วินซ็อกคอนโทรลจะแจ้งให้คุณรู้ว่าได้รับข้อมูล เมื่อข้อมูลเข้ามาผ่านทาง อีเวนต์ DataArrival ซึ่งข้อมูลทั้งหมดจะถูกเก็บอยู่ที่บัฟเฟอร์ เราจะต้องใช้เมธอด GetData เพื่อ จะดึงข้อมูลนำมาใช้งาน

    Dim strData As String
    
    Winsock1.GetData strData, vbString
    txtDateTime = txtDateTime & Trim$(strData)

โค้ดด้านบนนี้ จะเป็นการดึงข้อมูลมาใส่ไว้ใน txtDayTime จากบัฟเฟอร์ที่เก็บข้อมูลไว้

เป็นเรื่องที่ดี ที่เราจะทราบเกี่ยวกับ ข้อผิดพลาดของวินซ็อก ซึ่งอาจจะเกิดขึ้นในขณะรันโปรแกรม โดยคุณควรใส่โค้ดต่อไปนี้ ไว้ในอีเวนต์ เออร์เรอร์ ของวินซ็อก

    MsgBox "Winsock Error: " & Number & vbCrLf & _
            Description, vbInformation

โด้ดนี้จะแจ้งให้คุณทราบถึงข้อผิดพลาดที่เกิดขึ้นกับวินซ็อก

เอาละครับ ตอนนี้ทุกอย่างก็พร้อม สำหรับการทดสอบโปรแกรมแล้ว ให้กด F5 เพื่อรันโปรแกรม ป้อนชื่อของเซิร์ฟเวอร์ลงในช่อง "Remote Host" (ตัวอย่างเช่น w3.org) แล้วทำการคลิกปุ่ม "Connect" แล้วรอสักครู่ จะมีการตอบกลับมาจากเซิร์ฟเวอร์ เป็นข้อมูลที่แสดงในช่อง txtDayTime ให้คุณทำการคลิกที่ปุ่ม "Connect" อีกครั้ง แล้วคอยดูผลที่เกิดขึ้น

จะมีการแจ้งข้อผิดพลาดเกิดขึ้น แต่คำว่า "current state" หมายความว่ายังไง? เราก็ต้องค้นหา คำตอบ โดยคลิกปุ่ม "Debug" และกดปุ่ม Ctrl-G จะปรากฎหน้าต่าง "Immediate" แล้วทำการพิมพ์ข้อความต่อไปนี้ แล้วกด enter

?Winsock1.State

คุณจะเห็นได้ว่า วินซ็อกคอนโทรลจะมีค่าของ State (สถานะ) ซึ่งเป็นตัวบอกถึงสถานะการทำงาน ในขณะนั้นของวินซ็อก ซึ่งมีค่าเท่ากับ 8 เพื่อหาคำตอบของค่าดังกล่าว ให้ทำการเรียก Object Browser (กดปุ่ม F2 )


จากหน้าต่าง Object Browser ทำให้เราทราบว่า วินซ็อกคอนโทรลในขณะนั้นมีสถานะ คือ ถูกเซิร์ฟเวอร์ตัดการติดต่อไปแล้ว ซึ่งในขณะที่มันอยู่ในสถานะนี้ เราไม่สามารถใช้สร้างการติดต่อ ครั้งใหม่ได้เลย แต่ก็มีเทคนิคง่ายเพื่อแก้ปัญหานี้ คือ การเรียกใช้เมธอด Close :

Winsock1.Close

เราจะต้องเรียกใช้เมธอด Close ก่อนการเรียกใช้เมธอด Connect ครั้งใหม่ เพื่อแก้ข้อผิดพลาดที่ เกิดขึ้นข้างต้น เอาละครับ เรามาลองดูกันอีกครั้ง รันโปรแกรม, ป้อนชื่อเซิร์ฟเวอร์, คลิกปุ่ม "Connect" แล้วรอการตอบกลับมาของเซิร์ฟเวอร์ เมื่อได้รับข้อมูลแล้ว ให้เราทำเหมือนเดิม คือ คลิกที่ปุ่ม "Connect" ซ้ำอีกครั้ง ก็จะปรากฏข้อผิดพลาดว่า "Address in use?" ข้อผิดพลาดนี้เกิด จากที่วินซ็อกมีการเรียกใช้หมายเลขพอร์ตเก่าที่ได้ปิดไปแล้ว(Close) มีวิธีการแก้ไขคือ กำหนด หมายเลขพอร์ตให้กับวินซ็อกใหม่ โดยจะกำหนดให้มีค่า เท่ากับศูนย์ (0 =จะเป็นการสุ่มหมายเลข พอร์ตที่ว่างอยู่โดยอัตโนมัติ) ดังโค้ดด้านล่างนี้

Winsock1.LocalPort = 0 

ดังนั้นจะได้โค้ดในส่วนของปุ่ม "Connect" ดังนี้:

Private Sub cmdConnect_Click()

    txtDateTime = ""
    Winsock1.Close
    Winsock1.LocalPort = 0
    Winsock1.Connect Trim$(txtRemoteHost), 13

End Sub


: ดาว์นโหลดตัวอย่างโปรแกรม (ดาว์นโหลด 4,517 ครั้ง)
 

- - - - - - - - - - - - - - ผู้ให้การสนับสนุน- - - - - - - - - - - - - -

สอบถาม
  • ห้ามการโฆษณา หากต้องการติดต่อหาลูกค้า ติดต่อโฆษณาโดยตรงได้ที่ webmaster@sourcecode.in.th
  • ห้ามใช้คำหยาบและคำพูดที่ไม่เหมาะสม
  • ขอสงวนสิทธิหากตรวจพบ ข้อความที่ไม่เหมาะสม ข้อความนั้นจะถูกลบทันที
ชื่อ
อีเมล์
รายละเอียด

 
 
สายต่อจอ สำหรับเครื่อง macbook pro 2016 (usb-c to HDMI)
สายต่อจอ สำหรับเครื่อง macbook pro 2016 (usb-c to HDMI) ความละเอียดระดับ 4K
หัวแปลง Mini DisplayPort to HDMI Adapter หัวแปลง Mini DisplayPort to HDMI Adapter สำหรับเครื่อง macbook air/pro, mac mini
หัวแปลง Mini DisplayPort to HDMI Adapter สำหรับเครื่อง macbook air/pro, mac mini
สายต่อหูฟัง และชาร์จไฟ สำหรับ iPhone 7 และ 7 Plus
สายต่อหูฟัง และชาร์จไฟ สำหรับ iPhone 7 และ 7 Plus
หัวแปลงจาก USB-C Type ไปเป็น USB 3.1 สำหรับ MacBook
หัวแปลงจาก USB-C Type ไปเป็น USB 3.1 สำหรับ MacBook
ไขควงสำหรับเครื่อง Macbook Air/Pro
ไขควง สำหรับแกะเครื่อง Macbook Air/Pro (300บาท)
HDMI เข้า 3 ออก  1 มีรีโมท
HDMI เข้า 3 ออก 1 มีรีโมท (350บาท)
คลิปสอนเขียนโปรแกรม
เรียนเขียนโปรแกรมดอทเน็ต
เรียนเขียนโปรแกรมแอนดรอยด์
เรียนเขียนโปรแกรมเบล็คเบอร์รี่
เรียนเขียนโปรแกรมซี ซีพลัสพลัส
เรียนเขียนโปรแกรมจาวา
เรียนการใช้งานลินุกส์
เรียนการเขียนโปรแกรมวินโดว์โฟน
เรียนการเขียนโปรแกรมพีเฮชพี มายเอสคิวเอล
9M Blog บอกเล่าเรื่องราว การเขียนโปรแกรมของ นายเอ็ม
บริการ ถ่ายภาพรับปริญญา
OrmSin.com: ขายหนังสืองานฝีมือไทย-ญี่ปุ่น-จีน (country crafts)
อัตราค่าโฆษณา
 
บทความที่เกี่ยวข้อง

บันทึกภาพจาก WebCam

เขียนโปรแกรม visual basic 6 แสดงภาพจาก กล้อง WebCam ของคุณ

การ Ping หมายเลข IP

View Source ของเว็บด้วย Inet (Microsoft Internet Tranfer Control)

การเข้าถึงเอกสาร HTML ผ่านทาง WebBrowser Control

ส่ง Broadcast ข้อมูล ด้วย VB

Client/Server โดยใช้ UDP ผ่านทาง MS Winsock

การใช้งาน Winsock Control

แสดงสถานะการดาวน์โหลดเว็บเพจ
Tutorial
eVB Tutorial
ASP.NET Webmatrix Tutorial
J2ME Tutorial
C++  Tutorial
Java  Tutorial
PHP Tutorial
ASP Tutorial
 
แบบสำรวจ
Freelance รับพัฒนาโปรแกรม

Home - Article - Tutorial - Sourcecode - Dev Handbook - Search - WebBoard - Links - About Us

สงวนลิขสิทธิ์ ห้ามคัดลอก ทำซ้ำ แก้ไข ดัดแปลง ไม่ว่าในรูปแบบใด โดยไม่ได้รับอนุญาตเป็นลายลักษณ์อักษร
เลขทะเบียนพาณิชย์อิเล็กทรอนิกส์จากกระทรวงพาณิชย์: 7100503002000
Copyright 2001 SourceCode.in.th