您的位置:软件 > 开发者网络 > 微软开发专栏 > Visual Studio.net专栏 > VB.net > 正文
Visual Basic.Net实现TCP协议
[文章信息]
作者:阿虎
时间:2003-12-29
出处:天极开发者网络
责任编辑:方舟
[文章导读]
本文的主要内容就来介绍在Visual Basic .Net实现基于TCP协议网络数据传送的一种简单的方法
advertisement
热点推荐
· 好友上线通知——QQ千里眼
· 解析Windows操作系统的管理
· 剑走偏锋——灵巧的旁注攻击
· Mail Notifier邮件提醒工具
· Linux操作系统网络应用解疑
[正文]

上一页  1 2 3 4 5 6  

  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的使用方法。最后希望本文能够开启您编写网络应用程序之门,对您掌握更深层次网络编程有所帮助。


上一页  1 2 3 4 5 6  

·"WAP天极之IT新闻资讯,50万元等你拿"    ·天极WAP之游戏狂图,50万元等你下载

天极社区邀请您:写博客日记  上传相片   论坛聊天  订阅电子杂志  推荐网摘   免费图铃工具
笔名:   请您注意:

 遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。

 天极网拥有管理笔名和留言的一切权利。
评论:
 

发表评论推荐给朋友我想参加相关培训打印我对此感兴趣订阅电子杂志
相关内容阅读排行榜
  • 在VB.NET中应用SQLDMO
  • VB.NET实现五子棋的人工智能
  • VB.NET数据库编程中的图形处理
  • VB.NET数据库工具教程之四
  • VB.NET数据库工具教程之三
  • 使用VB.NET线程访问数据库
  • 利用.NET类将DTD插入XML文件
  • 利用VB.NET设计Web菜单组件
  • 让手机帮你抱得美人归
  • 光棍节、孙悟空 配件也能分公母
  • 好友上线通知——QQ千里眼
  • 解析Windows操作系统的管理
  • 史前巨鳄 超频三散热器
  • 明花有主 飞利浦LCD有奖活动完美收场
  • 剑走偏锋——灵巧的旁注攻击
  • 统统闪开,最超值5700LE登场
  • Advertisement