VB6 文件传输互发代码
VB6 文件传输互发代码大| 中| 小[2006/03/04 10:56 | 分类: .Net | by NetFetch ]Visual Basic 6.0 文件发送端'********************版权信息********************'*隶属工程: FileTran1'*模块名称: frmMain'*模块描述: 发送文件'*成员个数: 11'*代码行数: 101'*声明行数: 16'*创建时间: 2006-02-21 14:22:29(创建人:MysticBoy)'*修改时间: 2006-02-21 14:22:29(修改人:MysticBoy)'*代码说明: 该模块负责发送文件。
'* 您需要向窗体内添加一个名为ws的winsock控件。
'*版权说明: 版权所有(c) ?-2006 Mysticsoft.'* 保留所有权'***********************************************Dim cState As String '当前状态Dim cmd As String '传输协议的命令Dim e As ErrObject ' 错误对象'********************成员[Command2_Click]说明信息******************** '*代码编辑: 2006-02-21 14:49:04'*成员类型: 对象[Command2]的[Click]事件'*HelpCtID: 0'*成员描述:'*功能说明: 测试发送一个文件。
'******************************************************************** Private Sub Command2_Click()SendFile \"E:影视&音乐韩国辣妹4th WhyKiller(boby vox).mpg\", \"127.0.0.1\"'发送文件'E:影视&音乐韩国辣妹4th WhyKiller(boby vox).mpg'MsgBox \"OK\"End Sub'********************成员[SendFile]说明信息********************'*代码编辑: 2006-02-21 14:49:04'*成员类型: 公有方法'*HelpCtID: 0'*成员描述: 发送文件'*输入参数: 参数名称说明'* FileName 要发送的完整文件名及其路径'* R emoteHost 接受文件的主机'* R emotePort [此参数可选] 接受文件的主机侦听的端口。
'*功能说明: <在此键入说明>'**************************************************************Public Function SendFile(FileName As String, RemoteHost As String, Optional RemotePort As Long = 1123) As BooleanIf ws.State <> 0 Then ws.Close '如果状态不为0说明正在使用,为发送当前文件,强制关闭,避免错误ws.Connect R emoteHost, RemotePort '连接到远程主机,该主机接受文件.DoEvents '释放CPU时间If Waiting(\"ok\") = False Then '等待接受机回应.如果连接,在连接事件中设置状态'ok\"SendFile = False '如果等待超时,那么返回,并退出Exit FunctionElse'连接成功。
这里您可以提示用户连接成功End Ifws.SendData \"file\" '请求发送文件DoEvents '这对于VB6来说,这是发送数据后,程序必须做的,如果不释放,真正的发送将在CPU空闲时If Waiting(\"filename\") = False Then '等待接受机要求文件名SendFile = False '如果等待失败,退出Exit FunctionEnd If'服务器要求文件名''''''''Dim Fnx() As StringFnx = Split(FileName, \"\") '按照路径分隔符,分割路径Dim Fnam As StringFnam = Fnx(UBound(Fnx)) '然后取数组中最后一个索引的值,该值即文件名ws.SendData Fnam '发送文件名。
DoEvents '这对于VB6来说,这是发送数据后,程序必须做的,如果不释放,真正的发送将在CPU空闲时If Waiting(\"filedata\") = False Then '等待接受机请求文件数据的命令SendFile = False '如果等待失败,退出。
Exit FunctionEnd IfDim fn As LongDim cFileName As Stringfn = FreeFile '为打开要发送的文件准备一个有效的文件句柄Dim bArys() As Byte '为要发送的文件准备内存。
ReDim bArys(FileLen(FileName) - 1) '按文件大小准备内存,注意:这里必须减一Open FileName For Binary As #fnGet #fn, , bArys '读取文件到数组中Close #fnws.SendData bArys '发送该数组。
DoEvents '这对于VB6来说,这是发送数据后,程序必须做的,如果不释放,真正的发送将在CPU空闲时cState = \"sendok\" '然后设置状态为发送完成。
DoEvents '释放CPU事件。
以便开始发送。
Waiting \"end\" '等待发送结束。
End Function'********************成员[Waiting]说明信息********************'*代码编辑: 2006-02-21 14:49:00'*成员类型: 公有方法'*HelpCtID: 0'*成员描述:'*输入参数: 参数名称说明'* txt 要等待的状态文本内容。
'* tmout [此参数可选] 超时'*功能说明: <在此键入说明>'************************************************************* Function Waiting(txt As String, Optional tmout As Long = 30) As BooleanDim sn As Singlesn = TimerDo Until cState = txt '一直等到状态为指定字符串时退出循环If tmout > 0 Then '如果设置的超时大于0If Timer - sn > tmout Then '开始等待的时间到目前为止的时间长超过超时时间时 Waiting = False '等待失败。
Exi t Function '退出函数End IfEnd IfDoEvents '释放cpu,因为我们不能霸道,因为这是个多任务的平台。
LoopWaiting = True '等待成功时返回。
End Function'********************成员[ws_Connect]说明信息********************'*代码编辑: 2006-02-21 14:49:04'*成员类型: 对象[ws]的[Connect]事件'*HelpCtID: 0'*成员描述: '如果连接成功设置状态为\"ok\"'*功能说明: '如果连接成功设置状态为\"ok\"'**************************************************************** Private Sub ws_Connect()cState = \"ok\" '如果连接成功设置状态为\"ok\"End Sub'********************成员[ws_DataArrival]说明信息******************** '*代码编辑: 2006-02-21 14:49:04'*成员类型: 对象[ws]的[DataArrival]事件'*HelpCtID: 0'*成员描述: 接受'*输入参数: 参数名称说明'* bytesTotal 接受到的数据大小'*功能说明:'********************************************************************Private Sub ws_DataArrival(ByVal bytesTotal As Long)Dim dat As Stringws.GetData dat, , bytesTotalcState = dat '接受到数据后立即设置状态信息。
以便Waiting结束等待End Sub'********************成员[ws_Error]说明信息********************'*代码编辑: 2006-02-21 14:49:04'*成员类型: 对象[ws]的[Error]事件'*HelpCtID: 0'*成员描述:'*输入参数: 参数名称说明'* Number '错误代码'* Description '错误描述'* Scode '错误的源代码标记'* Source'错误来源'* HelpFile'帮助文件'* HelpContext'帮助内容'* CancelDisplay'是否显示'*功能说明:'**************************************************************Private Sub ws_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)e.Number = Number '如果发生意外错误。
vb6 sendmessage用法
vb6 sendmessage用法
在VB6中,SendMessage函数可以用于向窗口发送消息。
具体用法如下:
1. 在VB6的代码模块中声明SendMessage函数的引用:
```vb
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
```
2. 使用SendMessage函数向窗口发送消息:
```vb
Private Sub SendMessageDemo()
Dim hWnd As Long
Dim msg As Long
Dim wParam As Long
Dim lParam As Long
' 获取目标窗口句柄
' hWnd = ...
' 设置消息和参数
msg = WM_USER + 1
wParam = 0
lParam = 12345
' 发送消息
SendMessage hWnd, msg, wParam, ByVal lParam
End Sub
```
在上面的示例中,`hWnd`代表目标窗口的句柄,可以通过调用FindWindow或者其他Windows API函数获取。
`msg`代表要发送的消息,`wParam`和`lParam`是消息的参数。
需要根据具体的需求设置不同的消息和参数,可以参考Windows API文档来查看特定消息的值和参数的使用方法。
vb6 sub传递参数
vb6 sub传递参数在VB6中,可以使用Sub过程来传递参数。
以下是在VB6中详细精确地传递参数的方法:1. 通过值传递参数:在Sub过程的参数列表中声明参数,并在调用Sub过程时传递参数的值。
在Sub过程内部,可以使用参数的值进行操作,但不会影响传递给参数的原始值。
示例代码如下:vbSub MySub(ByVal num As Integer)' 使用传递的参数进行操作MsgBox "传递的参数值为:" & numEnd SubSub Main()Dim x As Integerx = 10' 调用Sub过程并传递参数的值MySub xEnd Sub2. 通过引用传递参数:在Sub过程的参数列表中声明参数,并在调用Sub过程时传递参数的引用。
在Sub过程内部,对参数的任何更改都会影响传递给参数的原始值。
示例代码如下:vbSub MySub(ByRef num As Integer)' 修改传递的参数值num = num + 10End SubSub Main()Dim x As Integerx = 10' 调用Sub过程并传递参数的引用MySub x' 输出修改后的参数值MsgBox "修改后的参数值为:" & xEnd Sub在上述示例代码中,通过值传递参数的Sub过程将显示传递的参数值为10。
而通过引用传递参数的Sub过程将修改传递的参数值,并在调用Sub过程后显示修改后的参数值为20。
需要注意的是,VB6中的Sub过程只能传递参数,而不能返回值。
如果需要返回值,可以使用Function过程。
vb6 sub传递参数
vb6 sub传递参数如何在VB6中传递参数到子程序(Sub)中。
步骤一:了解子程序(Sub)和参数的概念在VB6中,子程序(Sub)是一段独立的代码块,用于执行特定的功能操作。
子程序通常会接受输入参数,并根据参数的值进行相应的处理。
参数是一种特殊的变量,它允许在调用子程序时向其传递数据。
步骤二:声明子程序(Sub)在VB6中,使用Sub语句来声明一个子程序。
具体的声明语法如下:Sub SubName(parameters)' 子程序的代码块End Sub其中,SubName是子程序的名称,它可以由字母、数字和下划线组成,但不能以数字开头。
parameters是传递给子程序的参数列表。
步骤三:传递参数到子程序(Sub)在调用子程序(Sub)之前,我们需要先定义并传递参数。
参数可以是任何数据类型,如整数、字符串等。
传递参数到子程序(Sub)的方式有两种:按值传递和按引用传递。
1. 按值传递:在子程序(Sub)声明中,参数前不加ByRef关键字。
按值传递意味着在调用子程序(Sub)时,传递给参数的是变量的值本身。
例如,我们定义一个名为AddNumbers的子程序,该子程序接受两个整数参数,并返回它们的和。
具体的代码如下:Sub AddNumbers(ByVal a As Integer, ByVal b As Integer) Dim sum As Integersum = a + bMsgBox "The sum of " & a & " and " & b & " is " & sumEnd Sub在主程序中调用该子程序,并传递参数:Private Sub Command1_Click()Dim num1, num2 As Integernum1 = 10num2 = 20AddNumbers num1, num2End Sub运行上述代码后,会弹出一个消息框,显示两个数值的和。
vb6中copyfile用法
vb6中copyfile用法VB6中CopyFile用法简介CopyFile函数是VB6中用于复制文件的一个重要函数。
它可以将一个文件从一个位置复制到另一个位置,同时还可以指定是否覆盖已存在的文件。
使用语法Public Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVa l lpNewFileName As String, ByVal bFailIfExists As Long) As Long参数说明: - lpExistingFileName:被复制的文件的路径和文件名。
- lpNewFileName:新文件的路径和文件名。
- bFailIfExists:指示如果目标文件已存在时是否覆盖。
0表示覆盖,非0表示不覆盖。
示例用法基本用法Dim sourceFile As StringDim destinationFile As StringsourceFile = "C:\Temp\"destinationFile = "C:\Temp\"CopyFile sourceFile, destinationFile, 0上述代码将把C:\Temp\文件复制到C:\Temp\。
覆盖已存在文件Dim sourceFile As StringDim destinationFile As StringsourceFile = "C:\Temp\"destinationFile = "C:\Temp\"CopyFile sourceFile, destinationFile, 1上述代码将把C:\Temp\文件复制到C:\Temp\,如果``已存在,则会被覆盖。
VB6基于TCP协议实现局域网内文件夹传送
VB6基于TCP协议实现局域⽹内⽂件夹传送刚刚拿到这个需求时,为了实现⽅便(传送⽂件已经实现,传送⽂件夹采取压缩的话也只需传送⼀个⽂件),计划采取的实现⽅法是:调⽤压缩组件,将⽂件夹压缩成⼀个⽂件,传送到另⼀端;在接收时,解压缩此⽂件得到⽂件夹。
由此带来的问题是:没有⼀个免费的压缩⽂件夹的组件。
于是想到的策略是:⽤shell程序调⽤dos下的arj.exe压缩。
但是由于arj是dos⼯具,有⼀个⽂件名的问题:⽂件名长度超过8位(中⽂4位),就会⾃动截断。
针对这个问题:⼜想了⼀种很笨的解决办法:将传送前,遍历⽂件夹,记录所有⽂件和⽂件夹名,传送时附带传过去,接收端接收完⽂件,解压缩后,修改⽂件名。
经过这么⼀折腾,由⼀个问题带来很多的头痛的问题。
(陷⼊了怪圈)。
后来经过仔细考虑,觉得⽤上述⽅法传送⽂件夹,有很多的隐患。
⼀:如果⽂件夹很⼤或⽂件很多,发送前的压缩操作需要很长时间,⽤户可操作性太差;⼆:由于要压缩⽂件夹,就需要保存,删除临时⽂件,如果处理不得当,会错删⽂件;三:⽤arj需要修改⽂件和⽂件夹名字,改名算法如果不健壮同样是⼀个隐患。
综合考虑了以后,决定修改传送算法。
基本思路是:既然传送⼀个⽂件已经实现,传送⽂件夹的话,⽆⾮是在⼀个连接过程多进⾏⼏次传送⽂件的过程。
详细⽅法描述:发送⽂件夹之前,⾸先遍历⽂件夹,保存每个⼦⽂件夹和⽂件信息(包括⽂件相对于选中的⽂件夹的路径,⽂件⼤⼩,⽂件名);传送之前,先发送传送请求,附带待传送⽂件夹的总体信息(⽂件夹名和⽂件夹总⽂件⼤⼩),接收端收到请求信息后,保存这些信息,选择保存路径,并发送确认标志符。
发送端收到确认标志符,⾸先传送单个⽂件的信息(单个⽂件的⼤⼩,⽂件名);接收端收到后,保存单个⽂件⼤⼩,在本地创建⽂件,发送请求发送⽂件内容标志符。
发送端收到后开始发送⽂件体;接收端开始接收⽂件体,当保存单个⽂件⼤⼩和接收到的数据相等时,请求发送第⼆个⽂件的⽂件信息,依次下去。
VB6httppost发送与返回内容处理
VB6httppost发送与返回内容处理今天帮同事做另一家公司的Web系统数据对接,我方发送请求,对方返回一些数据,用的是客户端用的是VB6,代码记录如下:[vb] view plain copy1.Dim postData As String2.Dim url As String3.4.url = "http://111.11.11.11/services/getQuickInfoService"5.postData = TextContent.Text6.7.'--- post8.Dim HttpClient As Object9.10.Set HttpClient = CreateObject("Microsoft.XMLHTTP")11.HttpClient.Open "POST", url, False12.HttpClient.setRequestHeader "Content-Type", "text/xml; charset=UTF-8"13.HttpClient.Send pvToByteArray(postData)14.15.Do While HttpClient.readyState <> 416.DoEvents17.Loop18.19.TextResponse.Text = HttpClient.responseText20.21.22.MsgBox "发送完毕"下面是发送内容的编码部分:[vb] view plain copy1.' 下面是两个转换函数2.3.Private Function pvToByteArray(sText As String) As Byte()4.pvToByteArray = GB2312ToUTF8(sText)5.6.End Function7.8.Public Function GB2312ToUTF8(strIn As String, Optional B yVal ReturnValueType As VbVarType = vbString) As Variant9.Dim adoStream As Object10.11.Set adoStream = CreateObject("ADODB.Stream")12.adoStream.Charset = "utf-8"13.adoStream.Type = 2 'adTypeText14.adoStream.Open15.adoStream.WriteText strIn16.adoStream.Position = 017.adoStream.Type = 1 'adTypeBinary18.GB2312ToUTF8 = adoStream.Read()19.adoStream.Close20.21.If ReturnValueType = vbString Then GB2312ToUTF8 = Mid(GB2312T oUTF8, 1)22.23.End Function效果:VB6比较老了,没有Java和C#那么完备,也没什么插件可以实现特定功能,但任然可以用原始的语句写出很多功能。
VB6.0文件操作详细攻略
VB6.0文件操作详细攻略文件:存储在外部介质上数据的集合。
按名存取1. 记录由若干个相互关联的数据项组成。
例如,由学生的学习成绩信息组成的记录:2. 文件及其种类文件是记录的集合(1) 顺序文件按顺序依次把记录写入文件;按顺序依次把记录读出来。
(2) 随机文件随机文件可以直接访问文件中的任意一个记录。
记录长度相同根据记录号访问(1) ASCII码文件数据是以ASCII码进行编码储存的。
(2) 二进制文件(Binary File)数据是以二进制格式进行编码保存的。
6.2 顺序文件1. 打开文件Open "文件名" [For 模式] [Access 操作类型] [锁定] As [#]文件号 [Len=记录长度](1) 模式OUTPUT:写操作INPUT:读操作APPEND:追加到文件未尾(2) 操作类型READ:只读WRITE:只能写READWRITE:读写皆可(3) 锁定:用于多进程环境,是否允许其他进程对打开的文件进行操作Shared(缺省):共享Lock Read:禁止其他进程对该打开的文件进行读操作Lock Write:禁止其他进程对该打开的文件进行写操作Lock Read Write:禁止其他进程对该打开的文件进行读写操作(4) 文件号1~511,可以用FreeFile函数获得下一个可利用的文件号。
(5) 记录长度小于或等于32767的整数。
它指定数据缓冲区的大小。
例如,打开C:\VB\SCORE,供写入数据,指定文件号为#1。
命令:OPEN "C:\VB\SCORE" FOR OUTPUT AS #12. 写入命令Print #文件号,[输出列表]输出列表的意义同Print方法。
保存文本框假定文本框的名称为txtTest,文件名为TEST.DAT。
方法1:把整个文本框的内容一次性地写入文件。
Open "TEST.DAT" For Output As #1Print #1, txtTest.TextClose #1方法2:把整个文本框的内容一个字符一个字符地写入文件。
基于VB6.0的双机文件传送系统
基于VB6.0的双机文件传送系统
曹金华;王宜怀
【期刊名称】《计算机应用研究》
【年(卷),期】2000(017)004
【摘要】在Visual Basic 6.0环境下,利用MSComm控件开发的双机文件传送系统,着重阐述了MSComm控件用于文件传送的使用要点以及相关设计方法,探讨了MSComm控件应用于文件传送中的特殊问题.
【总页数】3页(P53-54,60)
【作者】曹金华;王宜怀
【作者单位】苏州大学计算机工程系,苏州,215006;苏州大学计算机工程系,苏州,215006
【正文语种】中文
【中图分类】TP3
【相关文献】
1.基于VB6.0的双机远程通信 [J], 唐建雄
2.基于嵌入式系统的X-MODEM协议下的文件传送 [J], 李帅;聂慧饶;马浩;张文增
3.基于嵌入式系统的X—MODEM协议下的文件传送 [J], 李帅;聂慧饶;马浩;张文增
4.基于代理的异步安全文件传送系统的实现 [J], 毕岱君;陈文博
5.基于双机联合故障检测的双机热备系统可靠性和安全性研究 [J], 覃庆努;魏学业;于蓉蓉;吴小进
因版权原因,仅展示原文概要,查看原文内容请购买。
vb6编程代码大全
vb6编程代码大全Time 返回系统时钟的当前时间。
Date 返回系统时钟的当前日期。
Now 返回代表当前日期和时间的编码值。
该函数经常用作其它系统时钟函数的参数。
Hour(Time) 返回指定时间的小时部分(0到23)。
Minute(Time) 返回指定时间的分钟部分(0到59)。
Second(Time) 返回指定时间的秒部分(0到59)。
Day(Date) 返回月份中的日期数(1到31)。
Month(Date) 返回日期中的月份(1到12)。
Year(Date) 返回日期中的年度。
Weekday(Date) 返回日期中代表一周中的星期几。
Abs(n) 返回n的绝对值。
Atn(n) 返回n的反正切值,以弧度为单位。
Cos(n) 返回n的余弦值,以弧度为单位。
Exp(n) 返回e的n次方。
Rnd(n) 产生0到1之间的一个随机数。
Sgn(n) n小于0时返回-1,n等于0时返回0,n大于0时返回1。
Sin(n) 返回n的正弦值,以弧度为单位。
Sqr(n) 返回n的平方根。
Str(n) 把数值值转换成字符串。
Tan(n) 返回n的正切值,以弧度为单位。
Val(n) 把字符串转换为数值值。
Int(n) 返回数字的整数部分。
8.4-->9Fix(n) 返回数字的整数部分。
8.4-->8以上函数在VB6和VBScript中都适用,在。
NET里面要在前面加上相应的命名空间,如System.Math.Cos(),Microsoft.VisualBasic.Hour()。
数据类型转换函数:转换函数将表达式转换成CBool BooleanCByte ByteCCur Currency '只在VB7.0以下有效CDate DateCDbl DoubleCInt IntegerCLng LongCSng SingleCStr StringCVar Variant ‘只在VB7.0以下有效CVErr Error '只在VB7.0以下有效若想了解Visual Basic正在使用哪种变量类型,可使用VarType 函数。
用VB6.0编写手机短信发送
用VB6.0编写手机短信发送,因为手机短消息的发送是以PDU串的形式发送出去的,中文字符以Unicode码来表示,所以在发送中文短消息之前必须首先将中文字符转换为Unicode码,下面的函数将实< br/>因为手机短消息的发送是以PDU串的形式发送出去的,中文字符以Unicode码来表示,所以在发送中文短消息之前必须首先将中文字符转换为Unicode码,下面的函数将实现这个功能。
这个函数主要应用到VB自带的一个格式转换函数:ChrW()将中文转换为Unicode 码。
PublicFunctionchg(rmsgAsString)AsStringDimtepAsStringDimtempAsStringDimiAsIntegerDimbAsIntegertep=rmsgi=Len(tep)b=i/4Ifi=b*4Thenb=b-1tep=Left(tep,b*4)Elsetep=Left(tep,b*4)EndIfchg=""Fori=1Tobtemp="&H"&Mid(tep,(i-1)*4 1,4)chg=chg&ChrW(CInt(Val(temp)))NextiEndFunction同上,为了发送以PDU模式发送短消息,必须将手机号码和对方手机号码也转换为PDU 格式,下面的函数就是为了实现这种转换:PublicFunctiontelc(numAsString)AsStringDimtlAsIntegerDimltem,rtem,ttemAsStringDimtiAsIntegerttem=""tl=Len(num)Iftl<>11Andtl<>13ThenMsgBox"wrongnumber."&tlExitFunctionEndIfIftl=11Thentl=tl 2num="86"&numEndIfForti=1TotlStep2ltem=Mid(num,ti,1)rtem=Mid(num,ti 1,1)Ifti=tlThenrtem="F"ttem=ttem&rtem<emNexttitelc=ttemEndFunction手机号码有两种表示方法:11位和13位(带国家码86),一般手机发送时都是以13位形式表示的,所以以上的函数还有一个功能是自动将11位格式手机号码转换为13位形式,然后再转换为PDU串。
