最新版はこちらです 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 でメール送信