'(C)COPYRIGHT 1997 WILL
Option Explicit
'接続ボタン
Private Sub Command1_Click()
'Closedイベントがあがるまで接続ボタンは押せない
Command1.Enabled = False
'Connectメソッドをキャンセルできる
Command2.Enabled = True
On Error GoTo err1
'Text1 サーバーのホスト名またはIPアドレス
'Text4 サーバーのポート番号またはサービス名
' 7 echo echoサーバー
' 25 smtp smtpサーバー
' 43 whois whoisサーバー
' 79 finger fingerサーバー
' 110 pop popサーバー
Tcpip1.connect Text1, Text4, "0"
On Error GoTo 0
Command2.SetFocus
Exit Sub
err1:
MsgBox Err.Description & "(" & Err.Number & ")", vbExclamation, "Connect"
Command1.Enabled = True
Command2.Enabled = False
Text1.SetFocus
End Sub
'切断ボタン
Private Sub Command2_Click()
'いつCloseメソッドを実行しても大丈夫。
Tcpip1.Close
Text1.SetFocus
End Sub
'送信ボタン
Private Sub Command3_Click()
'Sendメソッドは文字変数しか受け付けない
Dim d$
'送信可能状態でない場合には送信できない
If (Tcpip1.Sendable = True) Then
'ローカルエコーをする
'Text2 送信文字列
'Text3 受信文字列
Text3 = Text3 & Text2 & vbCrLf
'サーバーはUnicode文字を受け付けないだろう
'改行コードは CR LF と決まっている
d = StrConv(Text2 & vbCrLf, vbFromUnicode)
Tcpip1.Send d
Else
MsgBox "まだ送信できる状態にありません", vbExclamation, "SEND"
End If
'次の送信文字列を編集するためにフォーカスを当てる
Text2.SetFocus
End Sub
'終了ボタン
Private Sub Command5_Click()
End
End Sub
Private Sub Form_Load()
'TCPIP.OCXの著作権表示
Label4 = Tcpip1.copyright
End Sub
'通信が切断された
Private Sub Tcpip1_Closed()
Command1.Enabled = True
Command2.Enabled = False
Command3.Enabled = False
Text1.SetFocus
End Sub
'サーバーと接続できた
Private Sub Tcpip1_Connected()
Command3.Enabled = True
'受信文字列をクリア
Text3 = ""
'送信文字列の編集の準備
Text2.SetFocus
End Sub
'受信した
Private Sub Tcpip1_Received(data As String)
'サーバーはANSI文字列。これをUnicodeにする
Text3 = Text3 & StrConv(data, vbUnicode)
'文末にカーソルを移動
Text3.SetFocus
Text3.SelStart = Len(Text3)
'送信文字列の編集の準備
Text2.SetFocus
End Sub
'Winsockで非同期処理実行中にエラーが発生した
Private Sub Tcpip1_WsError (ByVal Ecode As Long, ByVal Description As String,
ByVal Where As String, CancelClose As Boolean)
MsgBox Description & "(" & Ecode & ")", vbExclamation, "WsError(" & Where & ")"
End Sub
Private Sub Text1_GotFocus()
Text1.SelStart = 0
Text1.SelLength = Len(Text1)
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
'IPアドレスを入力してエンターキーが押されたら接続に行く
If (KeyAscii = 13) Then
KeyAscii = 0
Call Command1_Click
End If
End Sub
Private Sub Text2_GotFocus()
Text2.SelStart = 0
Text2.SelLength = Len(Text2)
End Sub
Private Sub Text2_KeyPress(KeyAscii As Integer)
'送信文字列を入力してエンターキーが押されたら送信する
If (KeyAscii = 13) Then
KeyAscii = 0
Call Command3_Click
End If
End Sub
Private Sub Text4_GotFocus()
Text4.SelStart = 0
Text4.SelLength = Len(Text4)
End Sub
Private Sub Text4_KeyPress(KeyAscii As Integer)
'ポート番号を入力してエンターキーが押されたら接続に行く
If (KeyAscii = 13) Then
KeyAscii = 0
Call Command1_Click
End If
End Sub
|