数据交换vb.net 数据交换方式有哪些

急!VB.NET 用SOCKET实现数据交换案例

rivate Shared Function ConnectSocket(ByVal server As String, ByVal port As Integer) As Socket'创建连接

10年的富川网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。成都营销网站建设的优势是能够根据用户设备显示端的尺寸不同,自动调整富川建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联从事“富川网站设计”,“富川网站推广”以来,每个客户项目都认真落实执行。

Dim s As Socket = Nothing

Dim hostEntry As IPHostEntry = Nothing

Dim address As IPAddress

address = System.Net.IPAddress.Parse(server)

Dim endPoint As New IPEndPoint(address, port)

Dim tempSocket As New Socket(endPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp)

tempSocket.Connect(endPoint)

If tempSocket.Connected Then

s = tempSocket

End If

Return s

End Function

调用:s = ConnectSocket(IP地址, 端口)'端口号如8000,8080等

s.close'关闭连接

VB.NET的数据类型转换方式主要有哪几种?

CType 函数

任何数据类型

必须在两种数据类型之间定义扩大转换或收缩转换

引发 InvalidCastException

DirectCast

任何数据类型

一个类型必须继承自或者实现另一个类型

引发 InvalidCastException

TryCast

仅引用类型

一个类型必须继承或者实现另一个类型

返回 Nothing (Visual Basic)

VB.net用什么技术可以实现VB6中的DDE功能

DDE是一种动态数据交换机制(Dynamic Data Exchange,DDE),是 16 位 Windows 时代实现不同应用程序之间互相交换数据和控制的技术。使用DDE通讯需要两个Windows应用程序,其中一个作为服务器处理信息,另外一个作为客户机从服务器获得信息。

VB.NET实现PC与掌上电脑PPC的双向通信

本文介绍如何利用 通过Windows Sockets (Winsock)以及多线程编程进行桌面电脑与Pocket PC(掌上电脑 简称 PPC)间的双向通信 并且通过当今流行平台编程语言Visaul Basic Net 编写PC端和PPC端程序实现两者的信息交换 一 概述如今移动计算设备越来越普及 而PPC与桌面电脑的数据交换更是其必不可少的功能 笔者根据实际的无线PPC开发认为 PPC程序与桌面程序进行通信 除了可以通过SQL Server CE提供的RDA(远程数据存取)和Replication(复制)来完成与桌面SQL Server的数据存取外 另外一种比较方便快捷的方法则是通过Socket与桌面电脑完成信息的交换  采用Visaul Basic Net 进行PPC和桌面电脑的程序编写 已经完全不同于过去的VB 它的诸多新特性以及依托 Net平台强大的面向对象体系使VB Net焕然一新 不仅编写桌面程序更加轻松快捷而且更可快速的 可视化的开发以Pocket PC为平台的智能设备程序 Net框架是一种新的计算平台 可以简单理解为组件库或者类库 类似于MFC和VCL 但是却比它们更加强大和易用 NET框架具有两个主要组件 公共语言运行库和 NET 框架类库 公共语言运行库是 NET 框架的基础 可以将运行库看作一个在执行时管理代码的代理 它提供核心服务(如内存管理 线程管理和远程处理等) 以运行库为目标的代码称为托管代码 而不以运行库为目标的代码称为非托管代码 NET 框架类库是一个与公共语言运行库紧密集成的可重用的类型集合 该类库是面向对象的 NET 框架类库能够完成一系列常见编程任务 包括诸如字符串管理 数据收集 数据库连接以及文件访问等任务 Net框架精简版是完整 Net框架的子集 它是对完整的 Net框架进行精简后得到的版本 虽然其规模大大减小 但多数功能仍然保持完整 使用 NET框架精简版可以针对Pocket PC和其他Windows CE NET设备进行开发和部署 提高开发人员的工作效率 VB Net编译的桌面程序在目标机器上需要 Net框架的支持才能运行 而编译过的PPC程序需要在目标PPC上装载 Net框架精简版后方可运行 二 设计思路在 Net框架中System Net Sockets命名空间为需要严密控制网络访问的开发提供了 Windows Sockets (Winsock) 接口的托管实现 该命名空间中包含了与Socket相关的类 接口和枚举 主要包括实现 Berkeley 套接字接口的Socket类 用于 TCP 网络客户端侦听连接的TcpListener类 为 TCP 网络服务提供客户端连接的TcpClient类以及提供无连接的发送和接收用户数据文报 (UDP) 的网络服务等 该命名空间下的大部分类都受 Net框架精简版的支持 也就是说实现这些对象的代码完全可以在装载有 Net框架精简版的PPC上运行 可以把PPC当作局域网中的一个终端来与桌面电脑连接 它们之间有多种物理连接方式 通常可以使用USB线缆配合ActiveSync直接与桌面电脑连接 当然 若PPC和桌面电脑同时具备其它的连接方式 比如无线WiFi(无线 x) 蓝牙等都可以组成相应的无线局域网络 在PPC上编写客户端程序并实现TcpClient类 用于连接 发送和接收流数据 在桌面电脑上我们设计Socket服务端程序并实现TcpListener类和Socket类 用于侦听和接受传入连接的请求 Socket类为网络通信提供了一套非常丰富的方法和属性 服务程序可以使用 TcpListener Listen 方法侦听连接 Accept 方法处理任何传入的连接请求 并返回可用于与远程主机进行数据通信的Socket 如果当前使用的是无连接协议(如UDP) 则根本不需要侦听连接 实际上TcpClient类和TcpListener类为 Socket通信提供了比Socket类更简单 对用户更友好的接口 如果编写较简单的应用程序 而且只需同步数据传输 则可以考虑使用 TcpClient TcpListener 和 UdpClient ……Listener = New TcpListener(System Net IPAddress Parse( ) ) Listener Start()Label Text = 正在 : 处侦听 …… 三 程序的具体实现 创建PPC客户端程序启动Visual Studio Net 新建Visaul Basic项目 并选择 智能设备应用程序 选择 Pocket PC 平台的 Windows 应用程序 并创建项目 Pocket PC平台是Windows CE 平台的子集 Windows CE系统的应用则更加广泛 项目创建完后 Visaul Studio Net会创建一个默认的主窗体Form 在窗体上分别放置两个Panel控件 四个Label控件 三个TextBox控件和两个Button控件 PPC客户端程序界面

设计PPC程序的Form窗体与桌面程序没有太多差别 只是少了一些PPC上所不支持的属性 但是属性的名称并没有变化 在PPC上没有窗口最小化的实际意义 所以主窗体的MinimizeBox属性必须设置成False 否则 当需要退出程序点击标题栏最右侧的关闭按钮时 程序并没有真正退出而是隐藏在后台 程序需要重新激活才能回到前台 或者可以向一个Button添加关闭主窗体的代码 Private Sub Button _Click(ByVal sender As System Object ByVal e As System EventArgs) Handles Button Click Me Close()End SubMe 为VB Net中的关键字 可以引用当前在其中执行代码的类或结构的特定实例 Me 的行为与引用当前实例的对象变量或结构变量类似 此例Me代表主窗体的实例Form 使用TcpClient向TcpListener或Socket 侦听器连接并交换数据 可以使用下面两种方法之一连接到侦听器 ( )创建一个 TcpClient 并调用三个可用的 Connect 方法之一 ( )使用远程主机的主机名和端口号创建 TcpClient 此构造函数将自动尝试一个连接 TcpClient的Connect 方法使用指定的主机名和端口号将客户端连接到 TCP 主机 重载函数原型为 使用指定的远程网络终结点将客户端连接到远程 TCP 主机 Overloads Public Sub Connect(IPEndPoint)使用指定的 IP 地址和端口号将客户端连接到 TCP 主机 Overloads Public Sub Connect(IPAddress Integer)将客户端连接到指定主机上的指定端口 Overloads Public Sub Connect(String Integer)我们使用指定的本地主机IP地址和端口号将客户端连接到TCP主机 在堆栈中创建TcpClient对象的实例 当执行退出当前过程或函数时 堆栈中的资源会自动清除 保证内存空间被正确释放 连接成功后要发送和接收数据 使用 GetStream 方法来获取一个NeorkStream NeorkStream为基础数据流 调用 NeorkStream 的 Write 和 Read 方法与远程主机之间发送和接收数据 当发送操作结束后使用 TcpClient的Close 方法断开连接 关闭对象并释放与 TcpClient 关联的所有资源 双击 连接 按钮 编写连接代码 代码片段如下

创建TcpClient对象的实例Client = New TcpClient 通过计算机名称和端口号连接到指定的计算机Client Connect( )SendData = 由PPC传递过来的数据 – Author Risen 按一定的编码规则对要传递的数据进行编码 Buffer = Encoding UTF GetBytes(SendData) 向已连接的服务程序发送数据Client GetStream() Write(Buffer Buffer Length) DataAvailable 指示NeorkStream 上是否有可用的数据 如果可以在流上读取数据 则为 true 否则为 false 只要有数据存在就等待传输完毕While Not Client GetStream DataAvailable() Application DoEvents()End While 接收由服务程序传递回客户端的数据并显示在对话框上If Client GetStream DataAvailable() Then Client GetStream() Read(InBuff InBuff Length) rtndata = 服务程序已经成功收到指令 在 System Text Encoding Default GetString(InBuff InBuff Length) MsgBox(rtndata)End If 断开连接 关闭对象并释放与 TcpClient 关联的所有资源

Client Close()

正确编译上述代码还需要在源文件的头部加入使用命名空间的引用 才能正确使用命名空间中的所有枚举 结构 类或模块等 Imports Sockets 添加需要导入的命名空间Imports System Text 添加需要导入的命名空间Public Class Form ……跟踪调试PPC程序需要在适当的模拟器下进行 譬如系统默认的PocketPC 模拟器 程序调试无误后可以连接到实际的PocketPC设备运行 实际部署到PPC设备需要在连接的桌面电脑上安装Microsoft ActiveSync将程序传输到用户目录中 创建桌面服务端程序启动Visual Studio Net 新建Visaul Basic项目 并选择 Windows应用程序 创建项目 项目创建完后Visaul Studio Net会创建一个默认的主窗体Form 在窗体上分别放置三个Label控件 两个TextBox控件 一个列表框控件和一个Button控件 创建全局的TcpListener对象的实例来侦听特定的端口 代码片段如下 创建在本机IP地址和端口侦听的TcpListener对象的实例Listener = New TcpListener( ) 开始侦听Listener Start() 侦听状态标志Listening = TrueLabel Text = 正在 处侦听 ……通过计时器定时检测侦听器有无连接请求并启用多线程来处理接收到的数据 代码片段如下 声明创建线程时 使用 ThreadStart 委托作为其唯一参数的构造函数创建 Thread 类的新实例 Dim CurThreadStart As ThreadStartDim CurThread As Thread 检测侦听器是否有挂起的连接请求 没有则退出计时器事件If Not Listener Pending() Then Exit SubEnd If 有连接的请求则将计时器暂停 准备进行处理tmProcessRequest Enabled = False 创建线程委托 传递需要操作的过程的地址CurThreadStart = New ThreadStart(AddressOf ProcessRequest)CurThread = New Thread(CurThreadStart) 开始一个线程CurThread Start() 重新启动计时器tmProcessRequest Enabled = True

将计时器触发事件的频率Interval(以毫秒为单位)适当调节可以改变服务程序响应连接请求的快慢 计时器不断循环 一旦发现有连接的请求就会创建一个线程专门来处理这个连接 创建线程时需要传递处理连接的过程或函数的地址以被线程调用

服务程序通过已连接的Socket获取数据 接收到的数据按相应的编码规则进行解码并将信息添加到列表框中

……CurThread = System Threading Thread CurrentThread() 接受挂起的连接请求并返回可用来发送和接收数据的SocketCurSocket = Listener AcceptSocketWhile Listening If CurSocket Available Then 接收来自绑定的Socket的数据Bytes = CurSocket Receive(Buffer Buffer Length ) 将接收到的数据转化成相应编码的字符串ReceivedData= Encoding UTF GetString(Buffer)SyncLock CurThreadlbReceived Items Add(ReceivedData)End SyncLock……TCPListener AcceptSocket接受挂起的连接请求 并且返回用于发送和接收数据的 Socket 此 Socket 继续用于和新连接上的客户端通信 SyncLock 语句确保多个线程不会同时执行向列表框添加数据的操作 当线程到达 SyncLock 块时 将计算表达式并保持此互斥性 直到在表达式返回的对象上有锁为止 这防止了表达式在多个线程运行期间更改值 从而避免代码产生意外的结果 向客户端返回服务端处理后的消息 代码片段如下 格式化返回消息 这是服务器端处理后的结果并返回到客户端 BacktoClientData = System DateTime Now 向客户端传递服务端程序处理时的时间Buffer = Encoding UTF GetBytes(BacktoClientData ToCharArray) 通过打开的套接字将结果发送回客户端应用程序 然后关闭该套接字 CurSocket Send(Buffer Buffer Length )CurSocket Close()编译桌面服务端程序运行效果如下图所示 当服务程序处理完一个连接后就向相应的PPC客户端返回一条成功信息 如下图所示 至此 PPC客户端程序和桌面服务端程序编写完毕 该系统在安装WindowsXP SP 的桌面电脑和Dell X i 的PPC上测试通过 四 结论本程序简单介绍了PC与PPC之间Socket通信方法 在实际应用中还有很多细节要做 并且还有可以拓展的地方 该模型为实现PC与PPC间复杂的信息交互 创建复杂的无线信息系统提供了一定技术基础 lishixinzhi/Article/program/net/201311/11532


分享文章:数据交换vb.net 数据交换方式有哪些
文章起源:http://cdiso.cn/article/hghijh.html

其他资讯