ネットワーク VB6 | |
作成した「単語検索」プログラムは、クライアントがサーバに接続しても正しく接続されたかどうか、英単語を入力して日本語訳が表示されるまでわからない。
ここでは、接続が完了したときに接続先のコンピュータ名が表示されるようにプログラムを追加する。
サーバの処理(追加)
コントロールの追加
図のようにラベルとテキストボックスをひとつずつ追加する。
ラベル(Label1)
Caption … 接続先、 Left … 120、 Top … 480、 AutoSize … True
AutoSizeプロパティはサイズを表示内容(Captionプロパティに設定された文字列データ)の大きさに合わせて自動的に変更するかどうかを設定するものである。Ture=サイズを自動的に変更する、False=サイズを自動的に変更しない。
テキストボックス(Text2)
Text … なし、 Height … 270、 Left … 120、 Top … 240、 Width … 3255
・プログラムリスト (1. クライアント名の表示)
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) Dim dat As String, ans As String Dim n As Integer Winsock1.GetData dat 'クライアントのコンピュータ名受信 If Left(dat, 2) = "##" Then 'コンピュータ名かどうか判定 Text2.Text = Mid(dat, 3) 'コンピュータ名を表示 Exit Sub 'プロシージャを抜け出す End If Text1.Text = dat For n = 0 To 20 If dat = Word(0, n) Then Winsock1.SendData Word(1, n) Exit For End If Next n If n = 21 Then Winsock1.SendData "わかりません" End If End Sub
受信データdatの最初の2文字が##であればコンピュータ名であるから、Left関数で先頭(左端)から2文字を取り出して"##"と比較している。コンピュータ名であれば、それをText2に表示してからこのサブプロシージャから抜け出す(Exit Sub)。コンピュータ名は受信データの3文字目からであるのでMid関数で3文字目以降を取り出している。
・プログラムリスト (2. 切断時の接続要求の再受付)
Private Sub Winsock1_Close() Text2.Text = "" 'コンピュータ名を消す Winsock1.Close '接続を閉じる Winsock1.Listen '接続要求を受け付ける End Sub
クライアントから接続が閉じられたとき、Closeプロシージャが呼び出される。
クライアントの処理(追加)
サーバのコンピュータ名はRemoteHostプロパティで参照できる(RemoteHostプロパティにサーバのコンピュータ名を設定している)。
サーバとの接続が完了したとき、Connectプロシージャが呼び出されるので、このプロシージャにコンピュータ名を表示するプログラムを追加する。
さらに、サーバのところで決めたようにクライアントのコンピュータ名(##を先頭に付けて)をサーバに送信するプログラムも追加する。
コントロールの追加
図のようにラベルをひとつ追加する。
ラベル(Label1)
Caption … 接続先、 Left … 120、 Top … 2880、 AutoSize … True
・プログラムリスト
Private Sub Winsock1_Connect() 'サーバのコンピュータ名を表示 Label4.Caption = "接続先:" & Winsock1.RemoteHost 'サーバにクライアントのコンピュータ名を送信 Winsock1.SendData "##" & Winsock1.LocalHostName End Sub
RemoteHost(リモートコンピュータ)とLocalHost(ローカルコンピュータ)について 使用するコンピュータから見た呼び方で、使用しているコンピュータをローカルコンピュータ、接続先をリモートコンピュータと呼ぶ。サーバがリモートでクライアントがローカル、またはその逆という意味ではない。 |
Copyright © 2001 Hiroshi Masuda |