VBでWEBサーバー
このプログラムは、本格的なWEBサーバーを構築することを目的としていません。
このプログラムは、WINSOCKコントロールの利用方法を示しています。
また、ブラウザの開発(デバッグ)を行うためのツールに利用することを目的としています。
- 新しいプロジェクトを作成。
メニュー -> 新しいプロジェクト から、「標準EXE」を選択
- プロジェクトにコントロールを追加する。
メニュー -> プロジェクト -> コンポーネント
から、「Microsoft Winsock Control」を追加


- フォームにコントロールを貼り付ける。
「Winsock」を2個とデバッグ用に「TextBox」を貼り付ける
->
- デバッグ用の「TextBox」を設定値を変更する。
・MultiLine を ture
・ScrollBars を 3−両方
に、変更する。
- コードの記述
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イベントでクローズを行う。
|