科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件Visual Basic.Net实现TCP协议

Visual Basic.Net实现TCP协议

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文的主要内容就来介绍在Visual Basic .Net实现基于TCP协议网络数据传送的一种简单的方法

作者:阿虎 来源:天极开发者网络 2007年11月9日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
9. 把Visual Studio .Net的当前窗口切换到Form1.vb的代码编辑窗口,并在Form1.vb文件的最前面添加下列代码,下列代码在Form1.vb中导入程序中要使用的类所在的命名空间:

Imports System.Net.Sockets
'使用到TcpListen类
Imports System.IO
'使用到StreamWriter类
Imports System.Net
'使用IPAddress类、IPHostEntry类等

  10. 在Form1.vb中创建各种可视组件的代码中添加下列代码,下列代码的作用是创建全局使用的实例和变量:

Private swWriter As StreamWriter
 '用以向网络基础数据流传送数据
 Private nsStream As NetworkStream
 '创建发送数据的网络基础数据流
 Private tcpClient As TcpClient
 '通过它实现向远程主机提出TCP连接申请
 Private tcpConnect As Boolean = False
 '定义标识符,用以表示TCP连接是否建立

  11. 用下列代码替换Form1.vb中的Button1的Click事件对应的处理代码,下列代码功能是向远程主机的8000端口号提出TCP连接申请,并在连接建立后,初始化基础数据流:

Private Sub Button1_Click ( ByVal sender As System.Object , ByVal e As System.EventArgs ) Handles Button1.Click
 Dim ipRemote As IPAddress
 Dim sHostName As String
 Dim tcpClient As TcpClient
 Try
  ipRemote = IPAddress.Parse ( TextBox1.Text )
 Catch
  MessageBox.Show ( "输入的IP地址不合法!" , "错误提示!" )
  Return
  '判断给定的IP地址的合法性
 End Try
 Try
  tcpClient = New TcpClient ( TextBox1.Text , 8000 )
  '对远程主机的8000端口提出TCP连接申请
  nsStream = tcpClient.GetStream ( )
  '通过申请,并获取传送数据的网络基础数据流
  swWriter = New StreamWriter ( nsStream )
  '使用获取的网络基础数据流来初始化StreamWriter实例
  Button1.Enabled = False
  Button2.Enabled = True
  tcpConnect = True
  StatusBar1.Text = "已经连接!"
 Catch
  MessageBox.Show ( "无法和远程主机8000端口建立连接!" , "错误提示!" )
  Return
 End Try
End Sub

  12. 用下列代码替换Form1.vb中的Button2的Click事件对应的处理代码,下列代码功能是对基础数据流进行写操作,实现向远程主机传输文本数据:

Private Sub Button2_Click ( ByVal sender As System.Object , ByVal e As System.EventArgs ) Handles Button2.Click
 If ( TextBox2.Text <> "" ) Then
  swWriter.WriteLine ( TextBox2.Text )
  '刷新当前数据流中的数据
  swWriter.Flush ( )
  TextBox2.Text = ""
 Else
  MessageBox.Show ( "发送信息不能为空!" , "错误提示!" )
 End If
End Sub

  13. 用下列代码替换Form1.vb中的Dispose过程,下面代码的作用是重新定义Dispose过程,在过程中判断TCP连接是否仍然建立,如果建立则向远程主机传送控制码,断开连接,并手动清除使用的资源,回收垃圾:

Protected Overloads Overrides Sub Dispose ( ByVal disposing As Boolean )
 If tcpConnect Then
  swWriter.WriteLine ( "STOP" )
  '发送控制码
  swWriter.Flush ( )
  '刷新当前数据流中的数据
  nsStream.Close ( )
  swWriter.Close ( )
  '清除资源 ( )
 End If
 If disposing Then
  If Not ( components Is Nothing ) Then
   components.Dispose ( )
  End If
 End If
 MyBase.Dispose ( disposing )
End Sub

  14. 至此【客户端程序】就完成了。在正确编译项目后。就可以选择局域网中任二台计算机来测试了,一台运行客户端程序,一台运行服务器端程序。在服务器端程序运行后,单击【启动服务】按钮,启动服务后。在客户端程序的【服务器IP地址】文本框中输入网络中运行服务器端程序主机对应的IP地址后,单击【连接】按钮,就和启动服务的服务器端程序建立TCP连接,此时就可以在客户端程序的【信息】文本框中输入文本信息后,单击【发送】按钮就能够把文本信息传送到服务器端了。图03和图04分别是客户端程序和服务器端程序运行后进行通讯时的界面:


图03:【服务器端程序】的运行界面


图04:【客户端程序的】的运行界面

  五.总结:

  虽然本文用Visual Basic .Net实现一个简单的基于TCP协议的网络应用程序。但程序中使用的是NetworkStream作为载体,通过StreamWriter和StreamReader通过操作这个载体从而实现数据传输和接收。这种实现TCP协议方法虽然比较简单,但却无法回避NetworkStream作为网络传输、接收数据载体的一个致命的缺陷,那就是NetworkStream只能传输基于文本类型的数据,如果要传输基于字节的数据,使用这种方法就勉为其难了。而套接字(Socket)就能够胜任这项工作,套接字不仅能够实现各种类型数据在网络上的传输和接收,也是实现网络中其他应用协议的关键。诸位若想真正成为网络编程的高手,必须掌握Socket的使用方法。最后希望本文能够开启您编写网络应用程序之门,对您掌握更深层次网络编程有所帮助。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章