小弟做了一个客户端和服务器的程序,客户端发送文件到服务端,用winsock可以这样实现,程序如下:
服务器端:
Private Sub Command1_Click()
Winsock2.LocalPort = 3000
Winsock2.Listen
End Sub
Private Sub Winsock2_ConnectionRequest(ByVal requestID As Long)
If Winsock2.State <> sckClosed Then Winsock2.Close
'MsgBox Index, vbOKOnly
Winsock2.Accept requestID
End Sub Private Sub Winsock2_DataArrival(ByVal bytesTotal As Long)
Dim bytData() As Byte
Dim lLenFile As Long Dim f
f = FreeFile
Open "c:\nn.doc" For Binary As #f
lLenFile = LOF(f)
ReDim bytData(1 To bytesTotal)
Winsock2.GetData bytData
If lLenFile = 0 Then Put #f, 1, bytData
Else
Put #f, lLenFile + 1, bytData
End If
Close #f
Dim a As String
End Sub
客户端程序:
Private Sub Command4_Click()
Winsock1.RemoteHost = "127.0.0.1"
Winsock1.RemotePort = 3000
Winsock1.Connect
End Sub
Private Sub Command5_Click()
Dim FreeF As Integer '空闲的文件号
Dim LenFile As Long '文件的长度
Dim bytData() As Byte '存放数据的数组
FreeF = FreeFile '获得空闲的文件号
Open "c:\b.doc" For Binary As #FreeF '打开文件
DoEvents
LenFile = LOF(FreeF) '获得文件长度
ReDim bytData(1 To LenFile) '根据文件长度重新定义数组大小
Get #FreeF, , bytData '把文件读入到数组里
Close #FreeF '关闭文件
Winsock1.SendData bytData
End Sub
此程序以二进制方式发送和接受,在接收时不能以发送方的文件名保存,希望高手能帮忙!
另外,如果用richtextbox控件,可以直接把文件拖放到richtextbox框里面,但是当发送后,如果客户端和服务器端在一个机器上,能看到文件内容,如果服务器和客户端不在一起,那服务端只能看到图片格式的图标,保存不了数据,请问高手,如何用richtextbox发送和接受客户端所发送的richtextbox中显示的文件内容,和richtextbox中的字符。希望高手帮忙!!
服务器端:
Private Sub Command1_Click()
Winsock2.LocalPort = 3000
Winsock2.Listen
End Sub
Private Sub Winsock2_ConnectionRequest(ByVal requestID As Long)
If Winsock2.State <> sckClosed Then Winsock2.Close
'MsgBox Index, vbOKOnly
Winsock2.Accept requestID
End Sub Private Sub Winsock2_DataArrival(ByVal bytesTotal As Long)
Dim bytData() As Byte
Dim lLenFile As Long Dim f
f = FreeFile
Open "c:\nn.doc" For Binary As #f
lLenFile = LOF(f)
ReDim bytData(1 To bytesTotal)
Winsock2.GetData bytData
If lLenFile = 0 Then Put #f, 1, bytData
Else
Put #f, lLenFile + 1, bytData
End If
Close #f
Dim a As String
End Sub
客户端程序:
Private Sub Command4_Click()
Winsock1.RemoteHost = "127.0.0.1"
Winsock1.RemotePort = 3000
Winsock1.Connect
End Sub
Private Sub Command5_Click()
Dim FreeF As Integer '空闲的文件号
Dim LenFile As Long '文件的长度
Dim bytData() As Byte '存放数据的数组
FreeF = FreeFile '获得空闲的文件号
Open "c:\b.doc" For Binary As #FreeF '打开文件
DoEvents
LenFile = LOF(FreeF) '获得文件长度
ReDim bytData(1 To LenFile) '根据文件长度重新定义数组大小
Get #FreeF, , bytData '把文件读入到数组里
Close #FreeF '关闭文件
Winsock1.SendData bytData
End Sub
此程序以二进制方式发送和接受,在接收时不能以发送方的文件名保存,希望高手能帮忙!
另外,如果用richtextbox控件,可以直接把文件拖放到richtextbox框里面,但是当发送后,如果客户端和服务器端在一个机器上,能看到文件内容,如果服务器和客户端不在一起,那服务端只能看到图片格式的图标,保存不了数据,请问高手,如何用richtextbox发送和接受客户端所发送的richtextbox中显示的文件内容,和richtextbox中的字符。希望高手帮忙!!
dim a() as byte
a=strconv("我是中国人",vbFromUnicode)
这样就把"我是中国人"字符串赋值到a里面了,但是要注意的是,一个汉字占2个字节的,也就是a里面总共有10个字节