DSAPIマルチ機能コンポーネントによるネットワークプログラミング - ソケット通信編

本稿では、DSAPI.DLLにおけるソケットプログラミングの使用方法に焦点を当てます。ソケットプログラミングは知られていますように、使用するのは簡単ですが、実装するのは面倒です。私たちはソケットをカプセル化し、大幅に簡素化しました。以下では、サーバーとクライアントをコーディングする方法を示します。コードがこれほど少ないことに驚かないでください。必要な機能はすべて内蔵されているからです。

ソケットサーバーの作成

Private WithEvents srvSocket As New DSAPI.NetworkComponents.MultiUserSocketServer
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    With srvSocket
        .Port = 2000
        .StartListening()
    End With
End Sub

これでソケットサーバーの作成は完了です。上記の例では、複数のユーザー接続を許可するサーバーを示しました。同時に、単一ユーザー接続のみを許可するDSAPI.NetworkComponents.SingleUserSocketServerも存在します。サーバーのイベントを使用して、必要なほぼすべての機能を実装できます。サーバーのイベントは以下の通りです:

  • Server_StatusChanged(e As DSAPI.NetworkComponents.MultiUserSocketServer.ServerStatus)
  • Server_DataReceived(e() As Byte, IP As String, Sck As Net.Sockets.Socket)
  • Server_ClientConnected(clientIP As String, Socket As Net.Sockets.Socket)
  • Server_ClientDisconnected(clientIP As String)

クライアントからデータを受信した際に、そのクライアントにメッセージを送信する例:

Private Sub srvSocket_DataReceived(e() As Byte, IP As String, Sck As Net.Sockets.Socket) Handles srvSocket.DataReceived
    srvSocket.SendTextToClient(Sck, "こんにちは", System.Text.Encoding.Default)
End Sub

これはテキスト送信を簡略化した例です。パラメータに元のソケットクライアントオブジェクトSckが含まれているため、このオブジェクトを直接使用してBytes()を送信することも可能です。

ソケットクライアントの作成

Private WithEvents clientSocket As New DSAPI.NetworkComponents.SocketClient

これでソケットクライアントの作成は完了です。非常に簡単ですねはい。クライアントのイベントとメソッドを使用して、サーバーがクライアントにメッセージを送信した後、「メッセージ受信」イベントがトリガーされます。

Private Sub clientSocket_MessageReceived(Bts() As Byte) Handles clientSocket.MessageReceived
    Console.WriteLine(Bts)
    clientSocket.SendMessage(System.Text.Encoding.Default.GetBytes("メッセージを受け取りました。ありがとうございます"))
End Sub

クライアントでは3つのイベントが使用できます:

  • エラー発生
  • メッセージ受信
  • 接続切断

これで、DSAPIのソケットサーバーとクライアントを使用した通信方法を学びました。DSAPIのネットワーク関連機能については、これで終了です。その他の補足内容があれば、今後追加していきます。

タグ: DSAPI ソケット通信 ネットワークプログラミング Visual Basic クライアントサーバー

5月15日 17:47 投稿