最新版はこちらです VB.net : クライアントが送ったヘッダを表示するだけの HTTPサーバーU クライアントからサーバーへ送られる送られる生データを確認 したかったので作成しました。コマンドブロンプトなので、CTRL+C で 強制終了しますが、ブラウザから http://127.0.0.1:50000/quit で正式に 終了しますブラウザでダウンロード
Imports System.Net
Imports System.Net.Sockets
Imports System.Text
Imports System.Diagnostics
Imports System.Threading
Module MyModule
' ********************************************************
'
' ********************************************************
Sub Main()
' スレッド開始
Dim ThreadServer As New Thread(AddressOf ThreadEntry)
ThreadServer.Start()
ThreadServer.Join()
Console.WriteLine("処理は終了しました")
End Sub
Sub ThreadEntry()
Dim server As TcpListener = Nothing
Dim header As String = _
"HTTP/1.1 200 OK" + ControlChars.CrLf + ControlChars.CrLf + "response:OK"
Try
' 50000 番ポート使用
Dim port As Int32 = 50000
' ローカル
Dim localAddr As IPAddress = IPAddress.Parse("127.0.0.1")
' サーバーのインスタンスを作成
server = New TcpListener(localAddr, port)
' サーバー開始
server.Start()
' 読み込みバッファ
Dim bytes(1024) As Byte
' コマンドワーク
Dim data As String = Nothing
Dim bEnd As Boolean = False
Do While True
' 接続待ち
Console.WriteLine("Waiting ... ")
' 待機( 接続されると次の行へ )
Dim client As TcpClient = server.AcceptTcpClient()
' 受信したので処理開始
Console.WriteLine("Connected")
Console.WriteLine("-----------------------------")
data = ""
' 受信用ストリーム
Dim stream As NetworkStream = client.GetStream()
Dim i As Integer
Dim cd As Integer = 0
' **************************************************
' ストリームからデータを取得( 初回 )
' bytes : 1024
' **************************************************
i = stream.Read(bytes, 0, bytes.Length)
Do While i <> 0
' 最大1024バイトの処理
cd = 0
For idx As Integer = 0 To i - 1
' Windows 改行の1バイト目
If bytes(idx) = &HD Then
' 改行数
cd += 1
End If
' 改行後の最初
If cd = 0 Then
data += _
Encoding.ASCII.GetString(bytes, idx, 1)
End If
' Windows 改行の2バイト目
If bytes(idx) = &HA And cd = 1 Then
' 改行区切りでコマンドを取得
Console.WriteLine("{0}", data)
Dim Command As String() = data.Split(" ")
If Command(0) = "GET" Then
data = Command(1).Substring(1)
end if
' quit で終了
If data = "quit" Then
bEnd = True
End If
' 行単位の処理の為の初期化
cd = 0
data = ""
End If
Next
' 受信ヘッダ完了
If data = "" Then
' OK を返す
Dim msg As Byte() = _
Encoding.GetEncoding(932).GetBytes( _
header)
stream.Write(msg, 0, msg.Length)
Exit Do
End If
' 残っているデータをストリームから取得
i = stream.Read(bytes, 0, bytes.Length)
Loop
' 処理終了で接続解除してサービス終了
client.Close()
' quit で終了
If bEnd Then
Exit Do
End If
Loop
Catch ex As SocketException
Console.WriteLine("SocketException: {0}", ex)
Finally
server.Stop()
End Try
End Sub
End Module
|
|
【VB.NET : 通信の最新記事】
- VB.net(2010) : COMの Msxml2.ServerXMLHTTP を使用して WEBアプリにバイナリデータを POST する
- VB.net : TKFP.DLL 1.4.3 を使って FTPS でファイル(フォルダ)の一覧を取得する
- VB.net : COMの Msxml2.ServerXMLHTTP を使用して Google のURL短縮サービスを使用する( JSON )
- VB.net : COMの Msxml2.ServerXMLHTTP を使用して URL短縮サービス[bit.ly] を使用する( XML と TEXT )
- VB.net : COMの Msxml2.ServerXMLHTTP を使用して URL短縮サービス[p.tl] を使用する( JSON )
- VB.net : COMの Msxml2.ServerXMLHTTP を使用して WEBアプリにデータを POST する
- VB.net : COMの Msxml2.ServerXMLHTTP を使用して http 通信を行う
- VB.net : IPアドレスを IPv4 と IPv6 に区別して取得する
- Json.NET を使用して JSON 文字列を VB.net で使用する( 逆シリアライズ )
- VB.net : クライアントが送ったヘッダを表示するだけの HTTPサーバーU
- VB.NET : TKMP.DLL でメール送信






