中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > .NET > 临时文章
.Net socket编程-传输文本文件
作者:张悦 时间:2006-09-30 13:36 出处:ccidnet.com 责编:月夜寒箫
              摘要:.Net socket编程-传输文本文件
上次讲了在.net中使用socket类进行字符串的传输,从而编写一个聊天程序。这次还是用.net中的socket来,但是不是编写聊天程序了,而是一个文本文件发送接收程序。此程序将使用到filestream类和socket类。在发送端的作用是将文本文件中的文字读取出来,然后通过socket中send给发送出去。在接收端其作用是将发送到缓存中的数据读取出来,然后写到一个新的文本文件中去。

  为了更好的理解本程序,着里对filestream类做一个简单的讲解:filestream类是从stream派生出来的,它与stream类最大的不同是简化了对文件的操作。Filestream中的read方法的作用是将文件中的数据按字节的方式来读取。

  其中的第一个参数是相当特别的,因为它不是传入型,而是传出型的。它将从文件读取的数据保存在这个参数中。以后就可以同过多总方法来操作这个参数了。

  要编写此代码需要启动两个vb.net的ide。

  发送端程序:

Public Class Form1
            Inherits System.Windows.Forms.Form
            Private Sub Button1_Click(ByVal sender As System.Object,
              ByVal e As System.EventArgs) Handles Button1.Click
            Dim socsend As New Net.Sockets.Socket
              (Net.Sockets.AddressFamily.InterNetwork,
              Net.Sockets.SocketType.Stream, Net.Sockets.ProtocolType.Tcp)
            Dim ipendp As New Net.IPEndPoint
              (Net.IPAddress.Parse("192.168.0.1"), 9999)
              '用一个远程ip地址和端口号来初试终节点以次来帮定一个socket通道
            Dim filestream As New IO.FileStream("c:\j.txt",
              IO.FileMode.OpenOrCreate)
              '利用c盘下的j.txt文件来初始化filestream
            Dim msg(filestream.Length) As Byte
            Dim msgs As String
            filestream.Read(msg, 0, msg.Length - 1)
              '读取文件中的数据,然后保存到msg中
            socsend.Connect(ipendp)'连接
            socsend.Send(msg)'发送
            filestream.Close()'关闭文件流
            socsend.Shutdown(Net.Sockets.SocketShutdown.Both)
            socsend.Close()
            End Sub
            End Class

  接收端程序

Public Class Form1
            Inherits System.Windows.Forms.Form
            Dim soclis As New Net.Sockets.Socket
              (Net.Sockets.AddressFamily.InterNetwork,
              Net.Sockets.SocketType.Stream, Net.Sockets.ProtocolType.Tcp)
            Private Sub Button1_Click(ByVal sender As System.Object,
              ByVal e As System.EventArgs) Handles Button1.Click
            Dim bytes(99999) As Byte
            Dim str As String = Nothing
            Dim newfile As New IO.FileStream("kk.txt",
              IO.FileMode.OpenOrCreate)
                '建立一个新的kk.txt文本文件,用来将c:\j.txt中的内容写到kk.txt中
            Dim newsock As Net.Sockets.Socket = soclis.Accept()'同意连接
            newsock.Receive(bytes)'读取缓存中的数据
            str = System.Text.Encoding.UTF8.GetString(bytes)
            RichTextBox1.Text = str
            newfile.Write(bytes, 0, bytes.Length - 1)'将数据写到kk.txt中
            newfile.Close()'流关
            newsock.Shutdown(Net.Sockets.SocketShutdown.Both)
            newsock.Close()
            End Sub
            Private Sub Form1_Load(ByVal sender As System.Object,
              ByVal e As System.EventArgs) Handles MyBase.Load
            Dim ipendp As New Net.IPEndPoint
              (Net.IPAddress.Parse("192.168.0.1"), 9999)
            soclis.Bind(ipendp)'帮定socket
            soclis.Listen(10)'开始监听socket通道
            End Sub
            End Class

  程序说明:发送端:

  "Dim ipendp As New Net.IPEndPoint(Net.IPAddress.Parse("192.168.0.1"), 9999)"这条语句需要注意的是:192.168.0.1是目标机器的ip地址,你也可以用其他ip地址代替,但是必须保证发送和接收代码中的ip为相同地址。9999是目标机器的端口,意思是说打开192.168.0.1上的9999端口进行通信。

  "filestream.Read(msg, 0, msg.Length - 1)"是将文本文件的数据保存到msg中。

  接收端:

  "Dim ipendp As New Net.IPEndPoint(Net.IPAddress.Parse("192.168.0.1"), 9999)"在本台机器上打开9999端口进行通信。

  "Dim newsock As Net.Sockets.Socket = soclis.Accept()"建立与源计算机中的socket通道。

本程序在vb.net 2003和windows2000中下编写,在lan中通过。如果读者没有lan环境,可以在一台机器上通过"添加/删除硬件"添加微软的虚拟网卡并为其分ip地址。

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有