客户端: Private Sub cdmFind_Click() If tcpClient.State = sckConnected Then txtsenddata$ = Text3.Text tcpClient.SendData txtsenddata$ End If End Sub Private Sub cmdProperty_Click() Form2.Visible = True End Sub Private Sub cmdConnect_Click() tcpClient.RemoteHost = Ip_code tcpClient.RemotePort = CLng(Port_code) If tcpClient.State <> sckConnected Then tcpClient.Connect StatusBar1.Panels(1) = "连接中" End If cmdConnect.Enabled = False End SubPrivate Sub Form_Load() 'Form2.Visible = False End Sub Private Sub Form_Unload(Cancel As Integer) Unload Form2 End Sub Private Sub tcpClient_Connect() StatusBar1.Panels(1) = "连接建立" End Sub Private Sub tcpClient_Close() StatusBar1.Panels(1) = "已断" tcpClient.Close cmdConnect.Enabled = True End Sub Private Sub tcpClient_DataArrival(ByVal bytesTotal As Long) Dim getbyte() As Byte tcpClient.getdata getbyte Picture1.OLEDragMode = vbOLEDropManual End Sub
服务器端:Private Sub Form_Load() Ip_code = Trim(txtIP.Text) Port_code = Trim(txtPort.Text) 'Winsockserver.Protocol = sckTCPProtocol Winsockserver.LocalPort = Port_code 'Winsockserver.LocalIP = Ip_code Winsockserver.Listen End Sub Private Sub cmdOK_Click() If Winsockserver.State <> sckClosed Then _ Winsockserver.Close Winsockserver.RemoteHost = "127.0.0.1" Winsockserver.RemotePort = 8888 If Winsockserver.State <> sckConnected Then Winsockserver.Connect StatusBar1.Panels(1) = "连接中" End If 'cmdConnect.Enabled = False Dim sendBytes() As Byte Dim i As Long Dim filename As String filename = "D:\tp\173.gif" i = FileLen(filename) ReDim sendBytes(i) As Byte Open filename For Binary As #1 Get #1, , sendBytes Close #1'On Error GoTo MathHandler Winsockserver.SendData sendBytes 'MathHandler: ' If Err.Number = MnErrDivByZero Or _ ' Err.Number = ErrOverFlow _ 'Or Err = ErrBadCall Then ' Divide = Null ' 如果错误是被零除、溢出或非法过程调用, ' 则返回 NULL。 'Else '显示意想不到的错误信息。 ' Msg = "Unanticipated error " & Err.Number ' Msg = Msg & ": " & Err.Description 'MsgBox Msg, vbExclamation ' End If 'Dim bin() As Byte 'ReDim bin(FileLen("图片的文件名")) As Byte 'Open "图片的文件名" For Binary As #1 'get #1,bin() 'Close #1 'txtsenddata$ = "888" 'Winsockserver.SendData txtsenddata$ Winsockserver.Close End Sub Private Sub Winsockserver_Close() Winsockserver.Close End End Sub Private Sub Winsockserver_ConnectionRequest(ByVal requestID As Long) If Winsockserver.State <> sckClosed Then Winsockserver.Close Winsockserver.Accept requestID End Sub Private Sub Winsockserver_DataArrival(ByVal bytesTotal As Long) 'textget.Text = tmpstr ' Dim getBytes() As Byte 'Winsockserver.GetData getBytes 'Picture1.Picture = getBytes() Dim getdata As String Winsockserver.getdata getdata textget.Text = getdata End Sub
重新贴一下服务器,太乱啦!Private Sub Form_Load() Ip_code = Trim(txtIP.Text) Port_code = Trim(txtPort.Text) 'Winsockserver.Protocol = sckTCPProtocol Winsockserver.LocalPort = Port_code 'Winsockserver.LocalIP = Ip_code Winsockserver.Listen End Sub Private Sub cmdOK_Click() If Winsockserver.State <> sckClosed Then _ Winsockserver.Close Winsockserver.RemoteHost = "127.0.0.1" Winsockserver.RemotePort = 8888 If Winsockserver.State <> sckConnected Then Winsockserver.Connect StatusBar1.Panels(1) = "连接中" End If 'cmdConnect.Enabled = False Dim sendBytes() As Byte Dim i As Long Dim filename As String filename = "D:\tp\173.gif" i = FileLen(filename) ReDim sendBytes(i) As Byte Open filename For Binary As #1 Get #1, , sendBytes Close #1 Winsockserver.SendData sendBytesWinsockserver.Close End Sub Private Sub Winsockserver_Close() Winsockserver.Close End End Sub Private Sub Winsockserver_ConnectionRequest(ByVal requestID As Long) If Winsockserver.State <> sckClosed Then Winsockserver.Close Winsockserver.Accept requestID End Sub Private Sub Winsockserver_DataArrival(ByVal bytesTotal As Long)
Dim getdata As String Winsockserver.getdata getdata textget.Text = getdata End Sub
服务器 Option Explicit Public FileNumber As Integer Public pdSERver As Boolean Public GetFileNum As Integer Private Sub Command1_Click() On Error Resume Next If Dir(Text3.Text) = "" Or Text3.Text = "" Then MsgBox "没有可以传送的文件~", vbCritical, "Server" Else
VarPlus = 0 '------------------ Open Text3.Text For Binary As #GetFileNum '打开需传送的文件
Command2.Enabled = False Call TCPSendFile(frmmain.Winsock1, GetFileNum, SplitFile) End If End Sub Public Function SplitFile() As Long On Error Resume Next Dim GetCount As Long
End Function 客户端 Private Sub Winsock1_SendComplete() On Error Resume Next
If 0 = LenFile And pdSERver Then Close #GetFileNum Else Call TCPSendFile(Winsock1, GetFileNum, Server.SplitFile) End If
End Sub Private Sub Winsock1_Connect() On Error GoTo errend Dim temp As String * 8 Dim a() As Byte Dim sql As String temp = Hstrid sql = temp & "/<}&$+X$Z" a = sql Winsock1.SendData a Exit Sub errend: MsgBox "连接发生错误!数据发送失败!11111", vbOKOnly + vbExclamation, "TCP 错误信息" End SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long) Dim FileByte() As Byte Dim sql As String Winsock1.GetData FileByte, vbArray + vbByte '接收类型为:字节数组
Put #FileNumber, , FileByte '----------标线:)-------------
' '--------------- 进度显示 ---------------- VarPlus = VarPlus + (UBound(FileByte) + 1) Client.ProBar.Value = Int((VarPlus / LenFile) * 100) If Client.ProBar.Value = 100 Then Close #FileNumber
Private Sub cdmFind_Click()
If tcpClient.State = sckConnected Then
txtsenddata$ = Text3.Text
tcpClient.SendData txtsenddata$
End If
End Sub
Private Sub cmdProperty_Click()
Form2.Visible = True
End Sub
Private Sub cmdConnect_Click()
tcpClient.RemoteHost = Ip_code
tcpClient.RemotePort = CLng(Port_code)
If tcpClient.State <> sckConnected Then
tcpClient.Connect
StatusBar1.Panels(1) = "连接中"
End If
cmdConnect.Enabled = False
End SubPrivate Sub Form_Load()
'Form2.Visible = False
End Sub
Private Sub Form_Unload(Cancel As Integer)
Unload Form2
End Sub
Private Sub tcpClient_Connect()
StatusBar1.Panels(1) = "连接建立"
End Sub
Private Sub tcpClient_Close()
StatusBar1.Panels(1) = "已断"
tcpClient.Close
cmdConnect.Enabled = True
End Sub
Private Sub tcpClient_DataArrival(ByVal bytesTotal As Long)
Dim getbyte() As Byte
tcpClient.getdata getbyte
Picture1.OLEDragMode = vbOLEDropManual
End Sub
Ip_code = Trim(txtIP.Text)
Port_code = Trim(txtPort.Text)
'Winsockserver.Protocol = sckTCPProtocol
Winsockserver.LocalPort = Port_code
'Winsockserver.LocalIP = Ip_code
Winsockserver.Listen
End Sub
Private Sub cmdOK_Click()
If Winsockserver.State <> sckClosed Then _
Winsockserver.Close
Winsockserver.RemoteHost = "127.0.0.1"
Winsockserver.RemotePort = 8888
If Winsockserver.State <> sckConnected Then
Winsockserver.Connect
StatusBar1.Panels(1) = "连接中"
End If
'cmdConnect.Enabled = False
Dim sendBytes() As Byte
Dim i As Long
Dim filename As String
filename = "D:\tp\173.gif"
i = FileLen(filename)
ReDim sendBytes(i) As Byte
Open filename For Binary As #1
Get #1, , sendBytes
Close #1'On Error GoTo MathHandler
Winsockserver.SendData sendBytes
'MathHandler:
' If Err.Number = MnErrDivByZero Or _
' Err.Number = ErrOverFlow _
'Or Err = ErrBadCall Then
' Divide = Null ' 如果错误是被零除、溢出或非法过程调用,
' 则返回 NULL。
'Else
'显示意想不到的错误信息。
' Msg = "Unanticipated error " & Err.Number
' Msg = Msg & ": " & Err.Description
'MsgBox Msg, vbExclamation
' End If
'Dim bin() As Byte
'ReDim bin(FileLen("图片的文件名")) As Byte
'Open "图片的文件名" For Binary As #1
'get #1,bin()
'Close #1
'txtsenddata$ = "888"
'Winsockserver.SendData txtsenddata$
Winsockserver.Close
End Sub
Private Sub Winsockserver_Close()
Winsockserver.Close
End
End Sub
Private Sub Winsockserver_ConnectionRequest(ByVal requestID As Long)
If Winsockserver.State <> sckClosed Then Winsockserver.Close
Winsockserver.Accept requestID
End Sub
Private Sub Winsockserver_DataArrival(ByVal bytesTotal As Long)
'textget.Text = tmpstr
' Dim getBytes() As Byte
'Winsockserver.GetData getBytes
'Picture1.Picture = getBytes()
Dim getdata As String
Winsockserver.getdata getdata
textget.Text = getdata
End Sub
不会走就想飞
Ip_code = Trim(txtIP.Text)
Port_code = Trim(txtPort.Text)
'Winsockserver.Protocol = sckTCPProtocol
Winsockserver.LocalPort = Port_code
'Winsockserver.LocalIP = Ip_code
Winsockserver.Listen
End Sub
Private Sub cmdOK_Click()
If Winsockserver.State <> sckClosed Then _
Winsockserver.Close
Winsockserver.RemoteHost = "127.0.0.1"
Winsockserver.RemotePort = 8888
If Winsockserver.State <> sckConnected Then
Winsockserver.Connect
StatusBar1.Panels(1) = "连接中"
End If
'cmdConnect.Enabled = False
Dim sendBytes() As Byte
Dim i As Long
Dim filename As String
filename = "D:\tp\173.gif"
i = FileLen(filename)
ReDim sendBytes(i) As Byte
Open filename For Binary As #1
Get #1, , sendBytes
Close #1 Winsockserver.SendData sendBytesWinsockserver.Close
End Sub
Private Sub Winsockserver_Close()
Winsockserver.Close
End
End Sub
Private Sub Winsockserver_ConnectionRequest(ByVal requestID As Long)
If Winsockserver.State <> sckClosed Then Winsockserver.Close
Winsockserver.Accept requestID
End Sub
Private Sub Winsockserver_DataArrival(ByVal bytesTotal As Long)
Dim getdata As String
Winsockserver.getdata getdata
textget.Text = getdata
End Sub
socClient.Connect sServer
socClient.SendData txtSend.Text
调用了Connect语句后,控件立即返回,此时连接尚未建立。你应该在socClient_Connect事件中使用Winsockserver.SendData sendBytes
当然可以
都是流
可是怎么把这个流放到picturebox里面去啊?
Option Explicit
Public FileNumber As Integer
Public pdSERver As Boolean
Public GetFileNum As Integer
Private Sub Command1_Click()
On Error Resume Next
If Dir(Text3.Text) = "" Or Text3.Text = "" Then
MsgBox "没有可以传送的文件~", vbCritical, "Server"
Else
GetFileNum = FreeFile '取得未使用的文件号
LenFile = FileLen(Text3.Text) '获得需传送的文件的长度
'------------------
VarPlus = 0
'------------------
Open Text3.Text For Binary As #GetFileNum '打开需传送的文件
Command2.Enabled = False
Call TCPSendFile(frmmain.Winsock1, GetFileNum, SplitFile)
End If
End Sub
Public Function SplitFile() As Long
On Error Resume Next
Dim GetCount As Long
'计算出这次可发送的字节数
If LenFile >= 8000 Then
GetCount = 8000
LenFile = LenFile - GetCount
Else
GetCount = LenFile
LenFile = LenFile - GetCount
End If
'-----------------------------------------
VarPlus = VarPlus + GetCount
ProBar.Value = (VarPlus / ProBarLen) * 100
'-----------------------------------------
SplitFile = GetCount
'Me.ActiveControl
End Function
客户端
Private Sub Winsock1_SendComplete()
On Error Resume Next
If 0 = LenFile And pdSERver Then
Close #GetFileNum
Else
Call TCPSendFile(Winsock1, GetFileNum, Server.SplitFile)
End If
End Sub
Private Sub Winsock1_Connect()
On Error GoTo errend
Dim temp As String * 8
Dim a() As Byte
Dim sql As String
temp = Hstrid
sql = temp & "/<}&$+X$Z"
a = sql
Winsock1.SendData a
Exit Sub
errend:
MsgBox "连接发生错误!数据发送失败!11111", vbOKOnly + vbExclamation, "TCP 错误信息"
End SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim FileByte() As Byte
Dim sql As String
Winsock1.GetData FileByte, vbArray + vbByte '接收类型为:字节数组
Put #FileNumber, , FileByte '----------标线:)-------------
' '--------------- 进度显示 ----------------
VarPlus = VarPlus + (UBound(FileByte) + 1) Client.ProBar.Value = Int((VarPlus / LenFile) * 100)
If Client.ProBar.Value = 100 Then
Close #FileNumber
Winsock2.SendData SetMsge("/filetook", Hstrid, Client.Caption, "")
DoEvents
MsgBox "传送完毕", 0 + 32, App.Title
Unload Client
End If
End Sub
你存成文件,然后放到picturebox中,然后删除文件
整理的匆忙,你仔细看,可能有些变量没定义,自己参考一下吧,我写的欠在程序中分离不出来