本稿では、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のネットワーク関連機能については、これで終了です。その他の補足内容があれば、今後追加していきます。