ネットワーク VB6 | |
サーバの処理
クライアントからの接続要求があったとき | |
クライアントとの接続の処理をする。 クライアントから送信されるコンピュータ名を表示する。 |
|
クライアントからデータを受信したとき | |
受信データを表示する。 | |
送信データが入力されたとき | |
送信データをクライアントに送信する。 送信データを表示する。 |
|
クライアントが接続を閉じたとき | |
接続を閉じて、再度接続要求待ちにする。 |
・プログラムリスト
初期設定・終了処理とクライアントからの接続要求があったときの処理
Option Explicit '変数宣言の強制指定 Private Sub Form_Load() Winsock1.LocalPort = 1001 '接続要求受付ポート番号設定 Winsock1.Listen '接続要求待ち End Sub Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) Winsock1.Close 'Winsockを閉じる Unload Me End End Sub Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long) If Winsock1.State <> sckClosed Then 'Winsockの状態(閉じていない) Winsock1.Close 'Winsockを閉じる End If Winsock1.Accept requestID '接続処理 End Sub
Form_Loadプロシージャでは、接続要求受付ポート番号の設定と接続要求待ちの処理をしている。
今回のプログラムは終了のボタンを用意していないので、終了するにはコントロールボタン の閉じるをクリックする。このとき、QueryUnloadプロシージャが呼び出されるので、ここへ終了の処理をプログラムする。
クライアントからの接続要求があるとConnectionRequestプロシージャが呼び出される。ここで接続の処理をプログラムする。
クライアントからデータが送信されたときの処理
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) Dim dat As String Winsock1.GetData dat 'データ受信 If Left(dat, 2) = "##" Then 'コンピュータ名かどうか判定 txtRComp.Text = Mid(dat, 3) 'コンピュータ名を表示 Else DisplayData dat 'データ表示 End If End Sub Private Sub DisplayData(msg As String) '送受信データの表示 '入力データ表示 txtDisplay.Text = txtDisplay.Text & msg & vbCrLf 'カーソルを末尾へ移動 txtDisplay.SelStart = Len(txtDisplay.Text) End Sub
データを受信するとDataArrivalプロシージャが呼び出される。ここでは、
送信データが入力されたときの処理
Private Sub cmdSoushin_Click() 'データ送信(コンピュータ名+入力データ) Winsock1.SendData Winsock1.LocalHostName & ">" & txtInData.Text DisplayData txtInData.Text 'データ表示 End Sub Private Sub txtInData_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then 'リターンキー 'データ送信(コンピュータ名+入力データ) Winsock1.SendData Winsock1.LocalHostName & ">" & txtInData.Text DisplayData txtInData.Text 'データ表示 End If End Sub
クライアントが接続を閉じたときの処理
Private Sub Winsock1_Close() Winsock1.Close 'Winsockを閉じる Winsock1.Listen '再度、接続要求待ち End Sub
クライアントの処理
サーバ名を入力し、接続ボタンをクリックしたとき | |
サーバに接続を要求する。 | |
サーバとの接続が完了したとき | |
サーバにコンピュータ名を送信する。(接続のための必須の処理ではない) | |
サーバからデータを受信したとき | |
受信データを表示する。 | |
送信データが入力されたとき | |
送信データをサーバに送信する。 送信データを表示する。 |
|
サーバが接続を閉じたとき | |
接続を閉じて、接続先コンピュータ名を消す。 |
終了処理とサーバ名を入力し、接続ボタンをクリックしたときの処理
Option Explicit Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) Winsock1.Close 'Winsockを閉じる Unload Me End End Sub Private Sub cmdSetsuzoku_Click() Winsock1.Close '接続を閉じる Winsock1.RemoteHost = txtRComp.Text 'サーバのコンピュータ名設定 Winsock1.RemotePort = 1001 'ポート番号設定 Winsock1.Connect '接続する End Sub
サーバとの接続が完了したときの処理
Private Sub Winsock1_Connect()
'接続完了後、サーバにクライアントのコンピュータ名を送信
Winsock1.SendData "##" & Winsock1.LocalHostName
End Sub
サーバからデータを受信したときの処理
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) Dim dat As String Winsock1.GetData dat 'サーバからのデータ受信 DisplayData dat 'データ表示 End Sub Private Sub DisplayData(msg As String) '送受信データの表示 '入力データ表示 txtDisplay.Text = txtDisplay.Text & msg & vbCrLf 'カーソルを末尾へ移動 txtDisplay.SelStart = Len(txtDisplay.Text) End Sub
送信データが入力されたときの処理
Private Sub cmdSoushin_Click() 'データ送信(コンピュータ名+入力データ) Winsock1.SendData Winsock1.LocalHostName & ">" & txtInData.Text DisplayData txtInData.Text 'データ表示 End Sub Private Sub txtInData_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then 'リターンキー 'データ送信(コンピュータ名+入力データ) Winsock1.SendData Winsock1.LocalHostName & ">" & txtInData.Text DisplayData txtInData.Text 'データ表示 End If End Sub
サーバが接続を閉じたときの処理
Private Sub Winsock1_Close() Winsock1.Close 'Winsockを閉じる txtRComp.Text = "" '接続先コンピュータ名を消去 End Sub
Copyright © 2001 Hiroshi Masuda |