社区
VB基础类
帖子详情
请教
mcmamaman
2003-05-08 03:10:16
我刚开始学VB。一点基础都没有,现在单位要我做一个巨域网内部数据传输工具,功能类似于FTP,要用VB做,请问该如何做,谢谢大家了!
...全文
42
6
打赏
收藏
请教
我刚开始学VB。一点基础都没有,现在单位要我做一个巨域网内部数据传输工具,功能类似于FTP,要用VB做,请问该如何做,谢谢大家了!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
mcmamaman
2003-05-08
打赏
举报
回复
谢谢大家的帮忙,真的很感谢!
IwantFlay
2003-05-08
打赏
举报
回复
winsocket
lihonggen0
2003-05-08
打赏
举报
回复
在VB中实现文件上传
Visual Basic 作为一个集应用程序开发、测试、查错功能于一 体的集成式开发环境,越来越受到程序员的青睐。笔者在开发某数据 库维护系统的过程中,选择了VB5.0作为开发平台,Unix作为服务器端 操作系统,Informix 作为服务器数据库。
问题的出现
在开发该维护系统的过程中,注意到Informix 数据库的字段 类型CLOB 填入数据时需要函数FILETOCLOB("FILENAME","SERVER") , 其中的"FILENAME"需要指出文件路径和文件名称。然而,在维护过程 中此文件是在客户端执行的,这样就要求即时将文件传输到服务器端 。
解决办法
1. FTP传输工具
我们首先使用FTP传输工具,用VB5.0中SHELL 命令调用DOS批处理 文件来实现传输的需要。
Shell调用格式:
Shell(pathname[,windowstyle])
例子:Shell("c:\windows\upload.bat")
批处理文件upload.bat 的内容:
c:\windows\ftp hostname
username
password
send c:\zrh\upload.txt upload.txt
bye
该命令实现了文件"upload.txt"的传输要求。在使用完毕之后, 再调用命令把该文件删除。
例子:Shell("c:\windows\del_up.bat")
批处理文件del_up.bat 的内容:
c:\windows\ftp hostname
username
password
dele upload.txt
bye
这样,文件"upload.txt"被删除。
但是,另一个问题出现了。由于Shell 函数的运行机制是与其它 程序同步执行,也就是说,当调用Shell 函数的子程序还没有执行完毕 之前,Shell函数后面的语句已经执行。在大批量添加数据的过程中, 就会出现某个记录的文件还没有传到,而下一个插入语句(I nsert)已 经开始调用。这样,ODBC调用就会出现错误。
2. INET 控件
Internet Transfer控件提供了Internet 上最常使用的两种协议 :HTTP 和FTP。使用HTTP 协议可以连接到WWW服务器上来下载文件;使 用FTP协议则可以登录到FTP 服务器。一般的FTP命令,例如CD、GET 都可以通过Execute 方法实现。
下面是一个设置INET控件属性的例子。
inet1.URL=ftp://username:password@hostname/document
inet1.Protocol=2-icFTP
inet1.RemoteHost=hostname
inet1.RemotePort=21
inet1.Username=username
inet1. Password=password
执行文件传输:
Inet1.Execute "ftp://username:password@hostname", _
"PUT" &local_filename & " UPLOAD1.TXT"
right1 = Inet1.StillExecuting
Do While right1
right1 = Inet1.StillExecuting
DoEvents
Loop
这样便实现了文件的上载。
*SINET 控件的优点
INET控件与Shell()函数的不同之处在于INET控件通过调用语句
right1 = Inet1.StillExecuting
Do While right1
right1 = Inet1.StillExecuting
DoEvents
Loop来控制语句执行的顺序。在文件传输工作未完成之前,程序 不会执行其它语句,自然也就不会出现调用Shell 函数所出现的问题 。变量right1用来测试inet1 的执行状态,如果进程中仍在进行文件 传输的工作,则调用过程DoEvents给系统空闲时间来做文件传输工作, 这样便成功地执行了文件上载的功能。该文件使用完毕之后将被删除 。
Inet1.Execute "ftp://informix:informix@rd", _
"DELETE UPLOAD1.TXT"
right1 = Inet1.StillExecuting
Do While right1
right1 = Inet1.StillExecuting
DoEvents
Loop
将上载的文件删除是为了避免占用服务器端磁盘空间。
*S利用StateChanged事件提示信息
服务器在执行inet1.execute 的同时也激活了Inet1_StateChang ed事件,进程可以根据捕获到的状态进行动作。
object_StateChanged(ByVal State As Integer)
State:整数类型Integer
下面是状态的说明。
常数值 描述icNone
0 未报告状态icHostResolvingHost
1 控件正在寻找指定主机的IP地址icHostResolved
2 控件已成功找到指定主机的IP地址icConnecting
3 控件正在与指定主机进行连接icConnected
4 控件已成功与指定主机连接icRequesting
5 控件正在向主机发出请求icRequestSent
6 控件已成功向主机发出请求icReceivingResponse
7 控件正在从主机接收反馈信息icResponseReceived
8 控件已成功从主机接受反馈信息icDisconnecting
9 控件正在与主机断开icDisconnected
10 控件已与主机断开icError
11 在与主机通信的过程中发生了错误icResponseComp leted
12 请求结束且数据已经接收到
下面是一个例子。
Private Sub Inet1_StateChanged(ByVal State As Integer)
' Retrieve server response using the GetChunk
' method when State = 12. This example assumes the
' data is text.
Select Case State
' ... Other cases not shown.
Case icResponseReceived ' 12
Dim vtData As Variant ' Data variable.
Dim strData As String: strData = ""
Dim bDone As Boolean: bDone = False
' Get first chunk.
vtData = Inet1.GetChunk(1024, icString)
Do While Not bDone
strData = Data & vtData
' Get next chunk.
vtData = Inet1.GetChunk(1024, icString)
If Len(vtData) = 0 Then
bDone = True
End If
Loop
txtData.Text = strData
End Select
End Sub
Cooly
2003-05-08
打赏
举报
回复
如果和FTP,Web结合,可以使用Internet Transfer Control
如果仅仅是需要P2P数据传输,可以考虑使用Winsock
当然,如果可能,最好使用B/S的结构会比较方便一些。
bydisplay
2003-05-08
打赏
举报
回复
用winsock控件
leonnet
2003-05-08
打赏
举报
回复
必须用VB吗,做成WEB的更方便呀
英文邮件礼仪:向教授
请教
学术问题
英文邮件礼仪:向教授
请教
学术问题 邮件主题 邮件主题(subject)不需要写自己的名字。名字是在邮件系统设置里设定好的,在发件时会替换显示实际地址,所以无需在主题里再写一遍。 [关键内容是要在主题里就写明白是否有推荐人,以及主要是什么事。很多教授只看主题。] 一个好的标题,要能简洁地概括邮件的目的或内容。如果你对教授的某个研究项目感兴趣,就可以用这个研究方向作标题,例如"De
请教
神牛p1337
题目 :
请教
神牛 描述 Description: HZGD神牛是个非常牛B的人,每天都有人来向他
请教
问题.但是他有原则.同一个人不能在一个学期内
请教
他两次,并且他每天只见一个
请教
者, 无论他以前是否
请教
过,否则他就没时间去干其他事情了,嘿嘿(坏笑…就是不见宁智贤).于是,现在的问题就是,神牛并不是总记得每一个人.所以,你需要写一个程序帮助他判断每天接见的那个人是否
请教
过. 输入格式 Input ...
向别人
请教
问题,不要这样开头
前言 我们经常会有
请教
别人问题的时候,而下面这几种是不太建议的提问开头 在吗? 能问你一个问题吗? 有谁知道xxx吗? 当然你向我提问的时候,也不用称呼为大佬或者大神之类的,我就是一个普通的开发者。 为什么 毋庸置疑,你提问的目的自然是想得到解答,而上面三种提问方式都有一个共性,就是在看到上面的问题之后,仍然不知道具体问题是什么,而要简单回复之后才能得到真...
聊聊
请教
技术问题的正确方式
在日常生活中会经常遇到不懂的技术问题,好不容易找到这方面的行家,申请添加微信或QQ对方也通过了。但当发消息
请教
时却如石沉大海,毫无回音。难道技术大牛都那么高冷么? 当你备注了添加好友的原因,如果对方通过了,其实已经表明愿意就此内容与你沟通交流。但为什么当你发消息时却得不到回应?这不排除对方很忙,忙得忘记回答你的问题。更大的可能是你的提问或沟通方式不对。 最近作为被问者,被此问题困扰了好久,甚至在某...
曾国藩家书-修身篇 致诸弟·明师益友虚心
请教
曾国藩家书-修身篇 致诸弟·明师益友虚心
请教
感悟参考资料 感悟 本文1中对“格物”和“诚意”两个概念做了诠释,值得深究。 然则既自名为读书人,则《大学》之纲领皆己立身切要之事明矣。其修目有八,自我观之,其致功之处,则仅二者而已,曰格物,曰诚意。格物,致知之事也。诚意,力行之事也。物者何?即所谓本末之物也。身心意知家国天下,皆物也。天地万物,皆物也。日用常行之事,皆物也。格者,即格物而穷其理也。如事...
VB基础类
7,785
社区成员
197,585
社区内容
发帖
与我相关
我的任务
VB基础类
VB 基础类
复制链接
扫一扫
分享
社区描述
VB 基础类
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章