基本的なクライアントの動作は次のようになります。 なお、ストリームの説明は、ここをクリックください。
受けたいサービスのサーバに、IPアドレスとポート番号で接続する。 ⇒tcpC=new TcpClient(IPアドレス,ポート番号)
(この時、サーバーへの送信用のストリーム(sw=StreamWriter)と、受信用ストリーム(sr=StreamReader)を得る。)
必要に応じてデータを受信し⇒データ = sr.ReadLine()、
データを送信する⇒sw.WriteLine(データ)。
接続を閉じるtcpC.Close()
(先に、サーバーへの送信用(sw)と、受信用ストリーム(sr)を閉じる。)
以下に 文字列を送受信できるサーバーに対して、接続し、
コンソール画面からキー入力した1行を送信して、
サーバーから1行受信してそれを表示し、
接続を閉じるプログラムを示します。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim ip As String = "192.168.6.54" 'IPアドレスを記憶する変数用意 Dim port As Integer = 49152 'ポート番号を記憶する変数用意 Dim enc As Encoding = Encoding.GetEncoding("shift-jis") '送受信したバイト列と文字列の変換を行うオブジェクトを取得 'サーバーへの接続と、サーバーと送受信するためのストリームを取得 Dim tcpC As TcpClient = New TcpClient(ip, port) 'サーバーに接続 Dim sw As StreamWriter = New StreamWriter(tcpC.GetStream(), enc) '送信ストリームを生成 Dim sr As StreamReader = New StreamReader(tcpC.GetStream(), enc) '受信ストリームを生成 Dim msg As String '文字列を記憶するための変数用意 'データの送信 Console.Write("入力>") '画面に表示 msg = Console.ReadLine() 'キー入力させて、その入力した文字列を、msg に記憶 sw.WriteLine(msg) '文字列をサーバーへ送信 'データの受信 Console.WriteLine("受信データ待ち状態")'画面に表示 msg = sr.ReadLine() 'サーバーから文字列を受信し、その受信した文字列を、msg に記憶 Console.WriteLine(msg)'受信文字列を画面に表示 sw.Close() '送信ストリームを閉じる sr.Close() '受信ストリームを閉じる tcpC.Close() '接続を閉じる End Sub
なお上記プログラムソースの先頭で、クラスを使うための次の記述が必要になります。 このImportsは、クラスが属する空間名を指定するものです。
Imports System.Net.Sockets 'TcpClientを使うため Imports System.Text 'Encodingを使うため Imports System.IO 'StreamReaderやStreamWriterを使うため