?? client.frm
字號:
VERSION 5.00
Object = "{248DD890-BB45-11CF-9ABC-0080C7E7B78D}#1.0#0"; "MSWINSCK.OCX"
Object = "{6B7E6392-850A-101B-AFC0-4210102A8DA7}#1.3#0"; "comctl32.ocx"
Begin VB.Form Clients
BackColor = &H00E0E0E0&
BorderStyle = 0 'None
Caption = "Client"
ClientHeight = 90
ClientLeft = 4920
ClientTop = 4515
ClientWidth = 90
ControlBox = 0 'False
LinkTopic = "Form1"
MaxButton = 0 'False
MinButton = 0 'False
ScaleHeight = 90
ScaleWidth = 90
ShowInTaskbar = 0 'False
StartUpPosition = 3 '窗口缺省
Visible = 0 'False
Begin MSWinsockLib.Winsock wskClient
Left = 1830
Top = 120
_ExtentX = 741
_ExtentY = 741
_Version = 393216
End
Begin VB.Timer Timer2
Interval = 100
Left = 4020
Top = 480
End
Begin VB.Timer Timer1
Enabled = 0 'False
Interval = 3000
Left = 3600
Top = 480
End
Begin VB.ListBox List1
Height = 600
Left = 0
TabIndex = 3
Top = 390
Width = 4665
End
Begin VB.TextBox Text1
Height = 270
Left = 780
TabIndex = 1
Top = 52
Width = 1455
End
Begin VB.CheckBox Check1
Caption = "連接/等待"
Height = 225
Left = 3510
TabIndex = 0
Top = 75
Width = 1125
End
Begin ComctlLib.ProgressBar ProBar
Height = 195
Left = 0
TabIndex = 4
Top = 1020
Width = 3015
_ExtentX = 5318
_ExtentY = 344
_Version = 327682
Appearance = 0
End
Begin VB.Label Label1
Caption = "IP 地址:"
Height = 180
Left = 30
TabIndex = 2
Top = 97
Width = 720
End
End
Attribute VB_Name = "Clients"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Dim itwms As ListItem
Dim FileNumber As Integer
Dim LenFile As Long
Dim OnAccept As Boolean '是否在接收"字節"數據狀態
'----------------------
Dim ProBarLen As Long
Dim VarPlus As Long
Private Sub Check1_Click()
If Check1.Value Then
wskClient.RemoteHost = Text1.text
wskClient.RemotePort = 525
wskClient.Connect
List1.Clear
List1.AddItem "連接到 : " & FrmPass.Text2.text & ":" & 525
Else
wskClient.Close
Timer1.Enabled = False
List1.Clear
List1.AddItem "連接已關閉..."
End If
End Sub
Private Sub Form_Load()
Me.Hide
List1.AddItem "就緒"
OnAccept = False
Text1.text = FrmPass.Text2.text
Check1.Value = 1
End Sub
Private Sub Form_Unload(Cancel As Integer)
wskClient.Close '程序退出時關閉WinSock
End Sub
Private Sub Timer1_Timer()
Call Check1_Click
Timer1.Enabled = False
End Sub
Private Sub Timer2_Timer()
If wskClient.State = sckClosing Then
wskClient.Close
List1.Clear
List1.AddItem "連接已被對方關閉..."
List1.AddItem "3 秒后將自動重試連接..."
Timer1.Enabled = True
End If
End Sub
Private Sub wskClient_Connect()
List1.AddItem "連接成功"
End Sub
Private Sub wskClient_DataArrival(ByVal bytesTotal As Long)
Dim WskCommand As String
Dim CmdArr() As String
Dim FileByte() As Byte
Dim i As Long
If OnAccept Then '如果是在接收"字節"數據狀態時
wskClient.GetData FileByte, vbArray + vbByte '接收類型為:字節數組
Put #FileNumber, , FileByte '----------標線:)-------------
'--------------- 進度顯示 ----------------
VarPlus = VarPlus + (UBound(FileByte) + 1)
ProBar.Value = (VarPlus / ProBarLen) * 100
frmClient.txtOutput2.text = "Download :" & ProBar.Value & "/Byte" & vbCrLf
'-----------------------------------------
'計算接收狀態.如果已經接收完所有的文件.即告訴對方"SaveEnd"
'否則,告訴對方,這次傳送過來的東西我已經保存好了!
LenFile = LenFile - (UBound(FileByte) + 1) '數組的第一維是0.所以這里+1
If LenFile = 0 Then
'wskClient.SendData "SaveEnd"
OnAccept = False
Close #FileNumber
'MsgBox "接收完了!", vbInformation, "⊙_⌒γ - Client"
Unload Me
'Else
'wskClient.SendData "SaveOk"
End If
'上面包含了一個返回信息的方法[已被注釋起來了~]
'因為發送文件那邊改了使用SendComplete事件.不需要報告狀態了
Exit Sub
End If
'這里有一個分水嶺,呵呵!如果OnAccept = True下面的代碼不會執行!
wskClient.GetData WskCommand '接收數據
CmdArr = Split(WskCommand, ",") '把數據格式化到數組里
If CmdArr(0) = "SendFile" Then
' If MsgBox("對方傳送一個名叫 “" & CmdArr(1) & "”的文件給你!" & vbCrLf & _
' "長度為:" & CmdArr(2) & " 字節" & vbCrLf & vbCrLf & "你愿意接收嗎?", _
' vbQuestion + vbYesNo, "Client") = vbYes Then
' With Comdlg '確定接收,彈出保存對話框
' .CancelError = True
' On Error GoTo SaveErr
' .DialogTitle = "保存到..."
' .FileName = CmdArr(1)
' .Filter = "所有文件 (*.*)|*.*"
' .flags = &H4 Or &H2
' .ShowSave
' End With
wskClient.SendData "OkSend" '告訴對方,可以開始傳送
LenFile = Val(CmdArr(2)) '保存下文件的長度
'------------------
ProBarLen = LenFile
VarPlus = 0
'------------------
OnAccept = True '設置標記,下一次數據到達時,數據類型將會是:字節型
FileNumber = FreeFile '取得未使用的文件號
Open frmClient.Text1.text & "\" & CmdArr(1) For Binary As #FileNumber '打開文件
Else
wskClient.SendData "NoThanks" '拒絕接收文件
Unload Me
End If
'End If
Exit Sub
SaveErr:
wskClient.SendData "NoThanks"
End Sub
Private Sub wskClient_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
List1.Clear
List1.AddItem "無法連接服務器"
List1.AddItem "錯誤代碼 :" & Str$(Number)
List1.AddItem "3 秒后重試..."
Timer1.Enabled = True
wskClient.Close
End Sub
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -