.Net socket编程-传输文本文件
来源:互联网 发布:网页文字抓取软件 编辑:程序博客网 时间:2024/05/21 16:23
在.net中使用socket类进行字符串的传输,从而编写一个聊天程序。这次还是用.net中的socket来,但是不是编写聊天程序了,而是一个文本文件发送接收程序。此程序将使用到filestream类和socket类。在发送端的作用是将文本文件中的文字读取出来,然后通过socket中send给发送出去。在接收端其作用是将发送到缓存中的数据读取出来,然后写到一个新的文本文件中去。
为了更好的理解本程序,着里对filestream类做一个简单的讲解:filestream类是从stream派生出来的,它与stream类最大的不同是简化了对文件的操作。Filestream中的read方法的作用是将文件中的数据按字节的方式来读取。
其中的第一个参数是相当特别的,因为它不是传入型,而是传出型的。它将从文件读取的数据保存在这个参数中。以后就可以同过多总方法来操作这个参数了。
要编写此代码需要启动两个vb.net的ide。
发送端程序:
Public Class Form1 Inherits System.Windows.Forms.FormPrivate 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 SubEnd 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地址。
- .Net socket编程-传输文本文件
- .Net socket编程-传输文本文件
- .net用Socket实现点对点file传输
- [转帖]socket 网络编程 点对点传输文件
- VC++使用Socket网络编程传输文件
- python 间谍程序传输文件 socket编程
- 简单socket编程,传输文件,JAVA
- socket编程解决网络数据的传输
- IOS编程——Socket传输汉字
- socket网络编程 两类传输协议
- Socket编程(一)TCP传输文件
- socket编程之obj压缩加密传输
- Socket编程实现文件的传输
- .net Socket编程(一)
- .NET下Socket编程
- Java Socket编程(一)Socket传输模式
- Java Socket编程(一) Socket传输模式
- .Net网络通讯编程[利用Socket实现字串、文件、序列化对象传输]--类设计1[使用IE浏览本页]
- 修改IE标识
- servlet 生命周期
- YAFFS文件系统在2.6内核上的移植
- 放飞风筝 放飞梦想
- 译文:JavaScript框架比较–实用函数(四)
- .Net socket编程-传输文本文件
- 推荐清华大学王仙茅同学参加2010广州亚运会注册大学生记者选拔
- JAVA实现web登陆
- 译文:JavaScript框架比较–事件处理(五)
- extern用法详解
- 译文:JavaScript框架比较--Ajax(六)
- ubuntu 8.04 编译安装 php mysql apache
- 安装
- xml 和 Java Annotation 的优缺点对比