VB.NET 同 Console 程序交互的方法

本文详细介绍了如何在VB.NET中创建控制台应用程序并实现用户与程序的交互。通过示例代码,展示了读取用户输入、输出信息以及处理交互逻辑的方法,帮助开发者掌握在.NET环境下使用VB.NET进行Console程序开发的基本技能。
摘要由CSDN通过智能技术生成
''' <summary>
''' 使用 .NET 自带的 Process 类可以启动外部 Console 程序并获取其输出,
''' 但 Process 类需要在外部程序结束后,才一次性返回外部程序的输出。
''' 
''' 如果想实现同外部程序的交互,Process 类无法满足要求,唯有采取自行
''' 使用 WINAPI 创建进程并关联自己管道的方法才能逐字符获取程序输出。
''' </summary>
''' <remarks>
''' 
''' 1 内部私有类 WINAPI 仅声明了所需的函数和结构及常数,并非完整 WINAPI
'''   里面的数据类型需要自己定义一下,例如 Zero、LPTSTR 要定义成 Int32
'''   相当于给系统内置的数据类型取个别名,在项目属性的“引用”页添加
''' 
''' 
''' 2 使用指南
''' 
''' 2.1 首先需要 objname = New CPLINK( _in_exepath, _in_opt_encoding) 创建一个对象实例
''' 
''' 2.1.1 参数 exepath 必须是完整的绝对路径,必须是 Console 程序
''' 
''' 2.1.2 参数 encoding 可选,是同外部程序交互时使用的编码,如果省略则为 UTF8
''' 
''' 2.2 可以用 PlinkStart(命令行字符串) 启动程序
'''     并通过公共成员 CStdout, CStderr As StreamReader 读取外部程序的输出
'''     并通过公共成员 CStdin As StreamWriter 发送内容给外部程序
''' 
''' 2.3 可以用 PlinkStartWithEvents(命令行字符串) 启动程序
'''     然后侦听事件 E_PlinkOutRecieved(data As String, channel As Integer, iscompleteline As Boolean) 获得输出
''' 
''' 2.3.1 事件参数 data 是不含回车换行的一行文本
''' 
''' 2.3.2 事件参数 channel 为数字:1 表示来自于外部程序 stdout 的输出;2 表示来自 stderr 的输出
''' 
''' 2.3.3 事件参数 iscompleteline 为 True 表示因为收到了回车换行符而输出数据行,
'''       为 False 表示是因读取超时而输出已收到的数据;
'''       超时的具体值可以用公共成员 ReadTimeout_ms 来设置,缺省值是 75 毫秒;
'''       经实测,大于这个值在实时交互中字符回显会产生可以察觉的延迟,给用户带来不愉感
''' 
''' </remarks>


Public Class CPLINK
#Region "WINAPI定义"
    Private Class WINAPI
        <System.Runtime.InteropServices.StructLayout(System.Runtime.InteropServices.LayoutKind.Sequential)> _
        Private Structure STARTUPINFO
            Dim cb As DWORD
            Dim lpReserved As LPTSTR
            Dim lpDesktop As LPTSTR
            Dim lpTitle As LPTSTR
            Dim dwX As DWORD
            Dim dwY As DWORD
            Dim dwXSize As DWORD
            Dim dwYSize As DWORD
            Dim dwXCountChars As DWORD
            Dim dwYCountChars As DWORD
            Dim dwFillAttribute As DWORD
            Dim dwFlags As DWORD
            Dim wShowWindow As WORD
         
VB.NET中提供了FTP模块用于实现与FTP服务器的交互。FTP即文件传输协议,可用于上传或下载文件到远程服务器。 在VB.NET中,我们可以使用System.Net命名空间中的FtpWebRequest和FtpWebResponse类来创建FTP请求和接收服务器的响应。以下是VB.NET代码示例: ```vb Imports System.Net Imports System.IO Public Class FTPClient Public Sub UploadFileToFtp(ByVal filePath As String, ByVal ftpServerUrl As String, ByVal username As String, ByVal password As String) Dim request As FtpWebRequest = CType(WebRequest.Create(ftpServerUrl), FtpWebRequest) request.Method = WebRequestMethods.Ftp.UploadFile request.Credentials = New NetworkCredential(username, password) Dim fileData As Byte() = File.ReadAllBytes(filePath) request.ContentLength = fileData.Length Using requestStream As Stream = request.GetRequestStream() requestStream.Write(fileData, 0, fileData.Length) End Using Using response As FtpWebResponse = CType(request.GetResponse(), FtpWebResponse) Console.WriteLine("Upload File Complete, status {0}", response.StatusDescription) End Using End Sub Public Sub DownloadFileFromFtp(ByVal filePath As String, ByVal ftpServerUrl As String, ByVal username As String, ByVal password As String) Dim request As FtpWebRequest = CType(WebRequest.Create(ftpServerUrl), FtpWebRequest) request.Method = WebRequestMethods.Ftp.DownloadFile request.Credentials = New NetworkCredential(username, password) Using response As FtpWebResponse = CType(request.GetResponse(), FtpWebResponse) Using responseStream As Stream = response.GetResponseStream() Using fileStream As FileStream = File.Create(filePath) responseStream.CopyTo(fileStream) End Using End Using End Using Console.WriteLine("Download File Complete") End Sub End Class ``` 上述示例代码中,UploadFileToFtp方法用于将本地文件上传到FTP服务器,DownloadFileFromFtp方法用于从FTP服务器下载文件到本地。在调用这两个方法时,需要传入文件路径、FTP服务器地址、用户名和密码等参数。 这是VB.NET中使用FTP模块实现FTP文件传输的基本示例,可以在此基础上进行进一步的扩展和应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值