หากมีคำถาม ขอให้ไปโพสต์ลง เว็บบอร์ดจีทูจีเน็ตดอตคอม ตัวใหม่แทนน่ะครับ

หรือติดต่อเข้ามาทาง Inbox ที่ เฟซบุ๊ค ผมครับ

หน้าหลัก
ข่าวสาร - บทความ ทั้งหมด
VB 6/VB.Net
ASP/ASP.Net
จับฉ่ายคอมพิวเตอร์
เรียนรู้ผ่าน Flash Movie
บทความที่มีผู้ตอบล่าสุด  
 RSS Feeds
 ดาวน์โหลดโปรแกรม RSS Reader ได้ที่นี่ ...   Download โปรแกรม RSS Reader

Forum - www.g2gnet.com
Webmaster - www.g2gnet.com
Visitors - Session views
 5 1 2 8 4 8 0

7 ธันวาคม พ.ศ.2549
262 Users On-Line.
Visitors - Page views
 8 4 2 4 5 2 8
1 กุมภาพันธ์ พ.ศ.2551

Google   
เว็บ g2gnet.com
ขนาดตัวอักษร:  

Source Code โปรแกรมตรวจสอบและบันทึกการเชื่อมต่ออินเทอร์เน็ต (ภาค 2 ตอนง่าย)

Category »  VB 6/VB.Net
โดย : Webmaster เมื่อ 11/7/2552   เวลา: 07:17
(อ่าน : 16680) 
จากภาค 1 ตอนยาก ... ดูๆไปมันก็คงจะยาก และ สับสนพอสมควรล่ะครับสำหรับมือใหม่ๆ และ กลางๆ อันที่จริงแล้ว จุดประสงค์อีกประการหนึ่ง คือ ผมต้องการจะชี้ชัดๆ ให้เห็นถึงแนวคิด ของกระบวนการคัดแยกข้อมูล ข่าวสาร ที่ต้องการออกมาจากเอกสารตามที่ระบุ ซึ่งมันไม่ได้เกิดมาจากขั้นตอนสลับซับซ้อนแต่อย่างใดเลย ทว่ามันกลับเป็นเพียงการอาศัยหลักคิดแบบพื้นฐาน หรือ แบบบ้านๆนี่แหละ เข้ามาช่วยในการแก้ปัญหาเท่านั้นเองครับ ... พี่น้อง ... หลายๆคนก็คงพอจะทราบแล้วว่า ทำไมผมถึงไม่ยอมย้ายขึ้น .NET สักที ซึ่งในปัจจุบันนี้ ผมสามารถนำเอา VB6 มาผสมกับ ASP ก็ใช้ทำมาหากินได้อย่างเพียงพอแล้วครับ ซึ่งสำหรับงานนี้ ผมก็เพียงแต่เขียน Script ไปวางไว้ที่ Web Server ของผม ก็เป็นอันว่าผมสามารถรู้ IP Address ได้แล้วแหละครับพี่น้อง ... (ลองกลับไปอ่านภาค 1 ตอนยาก)
ASP Script สำหรับการอ่านค่า IP Address

' =================================================================
' ASP Script
' =================================================================
<%
    Dim strIPAddress
    strIPAddress = Request.ServerVariables("REMOTE_ADDR")
    Response.Write strIPAddress
%>
PHP Script สำหรับการอ่านค่า IP Address

// =================================================================
// PHP Script
// =================================================================
<?php
$ip_address = $REMOTE_ADDR;
echo $ip_address;
?>
  • ทั้งคำสั่ง Response.Write (ASP) และ echo (PHP) ก็คือ การสั่งให้พิมพ์ค่าที่อยู่ในตัวแปร strIPAddress (ASP) หรือ ค่าที่อยู่ในตัวแปร ip_address (PHP) ออกมาเท่านั้นเอง
  • ทางฝั่ง VB6 จะอาศัย MS Internet Transfer Control เพื่อทำการติดต่อ URL (ที่ระบุ) ... ซึ่งก็คือ ค่าของ IP Address นั่นเอง
    ดาวน์โหลด
    ดาวน์โหลด Source Code สำหรับ MS Visual Basic 6.0 - Service Pack 6
     ดาวน์โหลด Visual Basic 6.0 SP5: Run-Time Redistribution Pack
     ดาวน์โหลด Microsoft Data Access Object (MDAC) และ Jet 4.0 Update
     ดาวน์โหลด Microsoft Visual Basic Service Pack 6
    ข้อมูลเพิ่มเติม
    InternetGetConnectedStateEx - ไมโครซอฟท์
    InternetGetConnectedStateEx Function - ไมโครซอฟท์
    Source Code โปรแกรมตรวจสอบและบันทึกการเชื่อมต่ออินเทอร์เน็ต (ภาค 1 ตอนยาก)
    การใช้ Text File นำมาเก็บข้อมูลเป็น Logging file
  • Project --> References ...
  • Project --> Components ...
  • ออกแบบโปรแกรม (Design - Time)

    งานนี้ผมเลือกใช้งาน RichTextBox Control มาใช้ในการแสดงผล Logging File หรือ รายงานสถานะการเชื่อมต่ออินเทอร์เน็ต
    เริ่มต้นกระบวนการทำงาน
    
    Option Explicit
    
    ' =============================================================
    ' Application Programming Interface (API) สำหรับตรวจสอบการเชื่อมต่ออินเทอร์เน็ต
    ' =============================================================
    Private Declare Function InternetGetConnectedStateEx Lib "wininet.dll" ( _
        ByRef lpdwFlags As Long, _
        ByVal lpszConnectionName As String, _
        ByVal dwNameLen As Integer, _
        ByVal dwReserved As Long _
        ) As Long
        
    ' ใช้นับเวลาตามเวลาที่ตั้งเอาไว้ (1 - 60 นาที)
    Private CountTime As Integer
    
    ' =====================================================
    ' โปรแกรมย่อย (ฟังค์ชั่น) ตรวจสอบการเชื่อมต่ออินเทอร์เน็ตหรือไม่
    ' =====================================================
    Public Function CheckConnection() As Boolean
        ' จองพื้นที่ไว้ 255 ไบต์ เพื่อระบุการเชื่อมต่ออินเทอร์เน็ต
        Dim Buffer As String * 255
        
        ' ===================================================
        Dim lpdwFlags As Long
        ' อ่านรายละเอียดเพิ่มเติมที่
        ' http://msdn.microsoft.com/en-us/library/aa384705(VS.85).aspx
        ' http://msdn.microsoft.com/en-us/library/aa920300.aspx
        ' ===================================================
        
        Dim Flags As Long
        
        Flags = InternetGetConnectedStateEx(lpdwFlags, Buffer, 255, 0)
        ' หาก Flags มีค่าเป็น 0 จะเกิด Error (เหมือนกับ Win32 API ทั่วๆไป)
        ' (ฟังค์ชั่นที่ส่งค่ากลับมาโดยไม่เป็น 0 แสดงว่าทำงานได้ไม่มีข้อผิดพลาด)
        If Flags <> 0 Then
            CheckConnection = True
        Else
            CheckConnection = False
        End If
    
    End Function
    
    Private Sub Form_Load()
    ' หากว่าไฟล์ Logging.txt ไม่มี จะเกิดข้อผิดพลาดเกิดขึ้นที่คำสั่ง Kill ทันที
    ' ดังนั้นผมไม่สนใจ Error ที่เกิดขึ้น จึงต้องกำหนดให้เป็น Resume Next ... คือ ทำงานต่อไปได้เลย
    On Error Resume Next
    ' จะมีผลเฉพาะโปรแกรมย่อย Form_Load นี้เท่านั้นน่ะครับ
    
        
        ' ตั้งหน้าจอโปรแกรมอยู่ตำแหน่งกึ่งกลางจอภาพ
        ' การใช้หารตัดเศษ (\) จะทำงานได้เร็วกว่าการหารที่มีเศษ
        ' นี่ก็อีกเทคนิคของการ Optimized แม้เป็นเพียงจุดเล็กๆ เสียวเสี้ยวหนึ่งในโปรแกรม ... 55555+
        Me.Move (Screen.Width - Me.Width) \ 2, (Screen.Height - Me.Height) \ 2
        
        Dim i As Integer
        For i = 1 To 60
            cmbMinute.AddItem i
        Next
        cmbMinute.ListIndex = 0
        
        rtfLog.Text = ""
        Timer1.Enabled = False
        cmdStop.Enabled = False
        
        ' ตั้งค่าการกระตุ้น (Trigger) Timer1 ทุกๆ 1 นาที
        ' เมื่อ 1000 Millisecond = 1 วินาที
        ' 60 x 1000 = 60000 หรือ 1 นาที
        Timer1.Interval = 60000
        ' กรณีต้องการทดสอบทุกๆวินาที
        'Timer1.Interval = 1000
        
        CountTime = 0
    
        ' =============== การเคลียร์ข้อมูลใน Text File ============
        ' ลบไฟล์ Logging.txt ของเดิมทิ้งไปได้เลย ... 55555+
        'Kill App.Path & "\Logging.txt"
        ' หรือ ...
        Open App.Path & "\Logging.txt" For Output As #1
        Close #1
        ' ===============================================
        
    End Sub
    
    ' ========================================================
    ' ส่วนของ Timer1 จะถูกกระตุ้นการทำงาน ตามเวลาที่ตั้งเอาไว้ เพื่อบันทึกรายงานผล
    ' ========================================================
    Private Sub Timer1_Timer()
    
        ' จะมาทำงานในโปรแกรมย่อยนี้ทุกๆ 1 นาที ซึ่งมาทีไรก็ให้เพิ่มค่าขึ้น 1 ทุกที
        ' 1 ที่ว่ามานี้ มันก็คือ 1 นาทีนั่นเองแหละ
        CountTime = CountTime + 1
        
        If CountTime >= cmbMinute.Text Then
            ' เคลียร์ค่า เพื่อเริ่มการนับเวลาใหม่
            CountTime = 0
            Call LogFile
        End If
        
        ' กรณีทดสอบทุกๆวินาที ให้ใส่ Comment (') คำสั่งทางด้านบนให้หมด และ ...
        ' ให้ไปทำงานในโปรแกรมย่อย Call LogFile
        
    End Sub
    
    ' ========================================================
    ' โปรแกรมย่อยเพื่อทำการเก็บสถิติการเชื่อมต่ออินเทอร์เน็ต
    ' ========================================================
    Private Sub LogFile()
    
    Dim PublicIP As String
    Dim Str As String
    Dim StartIP As Long, EndIP As Long
        
    ' ส่วนของการทำ Logging File โดยการเรียกใช้งานผ่านทาง
    ' Project --> Preferences --> Microsoft Scripting Runtime
    Dim MyFSO As New FileSystemObject, LoggingFile
    Dim LogStream As TextStream
    
        If Dir(App.Path & "\Logging.txt") = "" Then _
                Set LoggingFile = MyFSO.CreateTextFile(App.Path & "\Logging.txt", True)
        ' ============================================================
        Set LoggingFile = MyFSO.GetFile(App.Path & "\Logging.txt")
        ' เมื่อเจอไฟล์ที่ต้องการก็ทำการบันทึกข้อมูลลงไปต่อท้ายไฟล์เลย (ForAppending)
        Set LogStream = LoggingFile.OpenAsTextStream(ForAppending)
        ' ============================================================
        
        ' หากต่ออินเทอร์เน็ตได้
        If CheckConnection Then
            ' เลือก Component --> MS Internet Transfer Control มาด้วยน่ะครับ
            Str = Inet1.OpenURL("http://www.g2gnet.com/MyIP.asp")
            ' หรือท่านที่ชื่นชอบ PHP Script ... ลองทดสอบที่ Server ผมก็ได้น่ะครับ
            'Str = Inet1.OpenURL("http://www.g2gnet.com/MyIP.php")
            ' พี่น้องครับ ... Windows Server สามารถรัน ASP และ PHP Script ได้ด้วยน่ะครับ
            ' แต่ Linux ไม่อาจจะมาเทียบชั้น หรือ ตีเสมอ ได้กับเล็กนิ่ม ... เอิ๊กๆๆๆๆ
            
            If Len(Str) > 0 Then
                ' ===================================================
                ' จะส่งค่าให้หรือไม่ก็ได้ครับ ... แต่ผมแค่ทำเอาไว้ให้ดู
                PublicIP = Str
                ' บันทึกลงไฟล์
                LogStream.WriteLine "Net Link : " & PublicIP & " วันที่ - เวลา " & Now()
                ' ===================================================
            End If
            
        ' อินเทอร์เน็ตดาวน์ล่ะครับ
        Else
            LogStream.WriteLine "Net Down : วันที่ - เวลา " & Now()
        End If
        
        LogStream.Close
        rtfLog.LoadFile LoggingFile
    
    End Sub
    
    Private Sub cmdExit_Click()
        Set frmCheckInternet = Nothing
        End
    End Sub
    
    Private Sub cmdStart_Click()
        ' เริ่มต้นการทำงาน
        Timer1.Enabled = True
        cmbMinute.Enabled = False
        cmdStart.Enabled = False
        cmdStop.Enabled = True
        
    End Sub
    
    Private Sub cmdStop_Click()
        ' หยุดการทำงาน
        Timer1.Enabled = False
        cmbMinute.Enabled = True
        cmdStart.Enabled = True
        cmdStop.Enabled = False
    End Sub
    
    Conclusion:
    วิถีชีวิตของคนเรามันไม่เหมือนกัน ดังนั้น "รู้อะไรให้กระจ่างแต่อย่างเดียว ขอให้เชี่ยวชาญเถิดจะเกิดผล" ไม่สามารถนำมาใช้กับสไตล์คนทำงานสารพัดอย่างในคนๆเดียวกันแบบผมได้เลย ... ผมต้องใช้เวลาหลายปีกว่าที่จะก้าวย่างมาถึงยัง ณ จุดๆนี้ที่เรียกตัวเองว่า "ฟรีแลนซ์แบบจับฉ่าย" ได้ ซึ่งผมมีความหวังอยากจะให้เด็กรุ่นใหม่ๆ ที่มีความตั้งใจจริง ไม่ต้องมา ใช้เวลาเรียนรู้ไปมากมายแบบผม เด็กๆกลุ่มที่ว่านี้ ผมคิดว่าน่าจะมีปริมาณที่ค่อนข้างเยอะมาก แต่แค่เขา (หรือ เธอ) ขาดแหล่งความรู้ ข้อมูล ที่จะชี้นำทางให้เกิดการก้าวกระโดด ไม่ใช่มาเตาะๆแตะๆอย่างเช่นในปัจจุบันนี้ ... บทความต่างๆของผม มันเลยก่อกำเนิดแนวทางการถ่ายทอดความรู้ที่ไม่ค่อยจะเหมือนใครในประเทศนี้ไงล่ะครับ ... พี่น้อง

  • จี ทู จี เน็ต ดอต คอม - g2gNet Dot Com
    เลขทะเบียนพาณิชย์อิเล็กทรอนิกส์ 0407314800231
    CopyLeft © 2004 - 2099 g2gNet.Com All rights reserved.
    Email: [email protected] หรือ โทร. 08-6862-6560