用.net中的socket实现文件传输 icknay [原作]

原创 2004年08月11日 14:51:00
socket是网络套接字,使用它我们可以很方便的实现网络的数据传输。在.net中提供了socket类来帮助开

发者调用socket的使用,从而避免了调用socket的动态库来实现socket的麻烦。下面我们就来看一个简单的例子,从这个简单的例子来看看.net中的socket类实现socket是多么的方便。

  编程思路:在这个简单的例子中我们将通过socket来实现文件的网络传输和接收功能。要实现这两个功能我们需要通过vs.net建立两个实例来完成。一个发送端,一个接收端。由于文中已经给出了详细的注释这里就不罗嗦了。


  发送端


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 sendsocket As New Net.Sockets.Socket
  (Net.Sockets.AddressFamily.InterNetwork,
  Net.Sockets.SocketType.Stream, Net.Sockets.ProtocolType.Tcp)
  '实例化socket
??????? Dim ipendpiont As New Net.IPEndPoint
  (Net.IPAddress.Parse("192.168.0.1"), 8888)'建立终结点
??????? 'OpenFileDialog1.ShowDialog()
??????? Dim fs As New IO.FileStream("c:/p.doc",
  IO.FileMode.OpenOrCreate, IO.FileAccess.Read)'要传输的文件
??????? Dim fssize(fs.Length - 1) As Byte
??????? Dim strread As New IO.BinaryReader(fs)'流处理要传输的文件
??????? 'fs.Read(fssize, 0, fssize.Length - 1)
??????? strread.Read(fssize, 0, fssize.Length - 1)
??????? sendsocket.Connect(ipendpiont)'连接远程计算机
??????? sendsocket.Send(fssize)'发送文件
??????? Label1.Text = fs.Length()
??????? fs.Close()
??????? sendsocket.Shutdown(Net.Sockets.SocketShutdown.Send)
  '关闭发送连接
??????? sendsocket.Close()'关闭本机socket
??? End Sub
End Class

  接收端

Public Class Form1
??? Inherits System.Windows.Forms.Form
??? Dim receivesocket As New Net.Sockets.Socket
???   (Net.Sockets.AddressFamily.InterNetwork,
???   Net.Sockets.SocketType.Stream,
???   Net.Sockets.ProtocolType.Tcp)
??? Private Sub Form1_Load(ByVal sender As System.Object,
???     ByVal e As System.EventArgs) Handles MyBase.Load
??????? Dim hostipendpiont As New Net.IPEndPoint
  (Net.IPAddress.Parse("192.168.0.1"), 8888)
??????? receivesocket.Bind(hostipendpiont)
  '建立远程计算机的的socket
??????? receivesocket.Listen(2)'监听socket
??? End Sub

??? Private Sub Button1_Click(ByVal sender As Object,
???   ByVal e As System.EventArgs) Handles Button1.Click
??????? Dim recfs As New IO.FileStream("p.doc",
  IO.FileMode.OpenOrCreate)
  '接收数据并将其保存到一个新的文件中
??????? Dim recbyte(229888) As Byte
??????? Dim hostsocket As Net.Sockets.Socket =
  receivesocket.Accept()
  '同意和发送端计算机建立连接
??????? Dim newfilestr As New IO.BinaryWriter(recfs)'流写
??????? hostsocket.Receive(recbyte)
??????? 'recfs.Write(recbyte, 0, recbyte.Length - 1)
??????? newfilestr.Write(recbyte, 0, recbyte.Length - 1)
??????? recfs.Close()
??????? hostsocket.Shutdown(Net.Sockets.SocketShutdown.Receive)
??????? hostsocket.Close()
??? End Sub
End Class

  通过上面的简单语句我们就完成网络文件的发送和接收,但是这里有一点要注意,此代码只可以接受文本文件和图片文件,对于其他文件的发送和接收将导致编码错误,如果你不相信你可以传输一个mp3文件,再在播放器中打开接收到的mp3文件,你会听到只有开头不到2秒的音乐可以播放。如果想解决这个问题你需要使用,net中的tcp/ip类或udp类来实现,当然调用底层的socket动态库也可以解决这个问题。

Windows用socket实现文件传输

这里只写客户端代码。编译前请加上libws2_32.a链接库,不然会导致链接失败。 客户端: #include #include #pragma comment(lib,"ws2_32.lib")...
  • e_one
  • e_one
  • 2016年05月14日 17:04
  • 14481

Java Socket实现文件传输

最近学Socket学上瘾了,就写了一个简单的文件传输程序。 客户端设计思路:客户端与服务端建立连接,选择客户端本地文件,先将文件名及大小等属性发送给服务端,再将文件通过流的方式传输给服务端。传输的...
  • huang930528
  • huang930528
  • 2016年09月01日 17:00
  • 6769

Linux网络编程:socket文件传输范例

基于TCP流协议的socket网络文件传输Demo: 实现:C语言 功能:文件传输(可以传任何格式的文件) /********************************************...
  • lisong694767315
  • lisong694767315
  • 2014年03月31日 23:53
  • 5046

.net用Socket实现点对点的文件传输

System.Sockes命名空间了实现 Berkeley 套接字接口。通过这个类,我们可以实现网络计算机之间的消息传输和发送。而在我下面要讨论的这个议题里,我们将讨论的是用套接字实现文件的传输.这种...
  • u014549630
  • u014549630
  • 2014年04月09日 15:52
  • 212

Linux网络编程之socket文件传输示例

本文所述示例程序是基于Linux平台的socket网络编程,实现文件传输功能。该示例是基于TCP流协议实现的socket网络文件传输程序。采用C语言编写。最终能够实现传输任何格式文件的文件传输程序。 ...
  • xipiaoyouzi
  • xipiaoyouzi
  • 2015年02月02日 11:25
  • 5481

Java Socket实现文件传输示例代码

这篇文章主要介绍了Java Socket实现文件传输示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 最近学Socket学上瘾了,就写了一个简单的文件传输...
  • maguanghui_2012
  • maguanghui_2012
  • 2017年02月07日 14:00
  • 1929

socket实现文件传输功能

要实现的功能为:client 从 server 下载一个文件并保存到本地。 编写这个程序需要注意两个问题: 1) 文件大小不确定,有可能比缓冲区大很多,调用一次 write()/send() 函数不...
  • yimingsilence
  • yimingsilence
  • 2017年06月03日 21:12
  • 1522

利用Socket实现多客户端传输对象和传输文件实现

第一次洗博客,纯属自己纪念,主要来源是慕课网的Socket通信课程,实现课后任务多客户端传输对象,自己遇到的最大问题是忘记给User类实现序列化接口。客户端实现:package com.imooc.t...
  • sinat_37518449
  • sinat_37518449
  • 2017年03月30日 11:25
  • 864

java Socket 文件传输

客户端: import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import...
  • hzw2312
  • hzw2312
  • 2013年10月28日 13:57
  • 30493

Socket编程一实现简易的聊天功能以及文件传输

干程序是一件枯燥重复的事,每当感到内心浮躁的时候,我就会找小说来看。我从小就喜爱看武侠小说,一直有着武侠梦。从金庸,古龙,梁羽生系列到凤歌(昆仑),孙晓(英雄志)以及萧鼎的(诛仙)让我领略着不一样的江...
  • u012551350
  • u012551350
  • 2017年02月21日 21:26
  • 5671
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用.net中的socket实现文件传输 icknay [原作]
举报原因:
原因补充:

(最多只允许输入30个字)