ソフト開発塾

VBでWEBサーバー

このプログラムは、本格的なWEBサーバーを構築することを目的としていません。
このプログラムは、WINSOCKコントロールの利用方法を示しています。
また、ブラウザの開発(デバッグ)を行うためのツールに利用することを目的としています。

  1. 新しいプロジェクトを作成。
    メニュー -> 新しいプロジェクト から、「標準EXE」を選択
  2. プロジェクトにコントロールを追加する。
    メニュー -> プロジェクト -> コンポーネント から、「Microsoft Winsock Control」を追加


  3. フォームにコントロールを貼り付ける。
    「Winsock」を2個とデバッグ用に「TextBox」を貼り付ける
    ->
  4. デバッグ用の「TextBox」を設定値を変更する。
    ・MultiLine を ture
    ・ScrollBars を 3−両方
    に、変更する。
  5. コードの記述
    FormのResizeで、「TextBox」をフォームいっぱいにする。
    コードは
        Me.Text1.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight       
    2個用意したコントロール「Winsock」の役割をWinsock1を待ち用、Winsock2を処理用とする。
    待ち用としたWinsock1を接続待ちようにするには、FormのLoadに
        Me.Winsock1.Bind 80
        Me.Winsock1.Listen
    httpのポートは80ですので、BINDで80を指定する。
    Winsock1のConnectionRequestのイベントは、VBの使用例を参考に記述する
        If Winsock2.State <> sckClosed Then Winsock2.Close
        Winsock2.Accept requestID
    このようにして、処理用のWinsock2を接続する
    受信処理の記述は、Winsock2のDataArrivalイベントで行う。
    VBの使用例を参考に記述する。
       Dim strData As String
       Winsock2.GetData strData, vbString
       Text1.Text = Text1.Text & strData
    ここに受信データにより、送信する内容を選択する。
    いまは、サンプルなので次のようなデータを送信する
        Dim html_buf As String
        html_buf = "<html><body><p>TEST DATA</body></html>"
    
        Dim mm_send_data As String
        mm_send_data = "HTTP/1.0 200 OK" & vbCrLf & _
                        "Connection: close" & vbCrLf & _
                        "Content-type: text/html" & vbCrLf & _
                        vbCrLf & _
                        "" & html_buf & ""
        Me.Winsock2.SendData mm_send_data
    Webサーバーの場合データ送信後、接続を切断する。
    そのため、今回は、Winsock2のSendCompleteイベントでクローズを行う。
        Me.Winsock2.Close

  ソフト開発塾  
     

本ホームページの転載・複製を禁じます。承諾無しに複製を行った場合、複製者のIPアドレス等公開します。

--- KONDO-NET.GR.JP ---