运用 .net 中的 socket 实现文件传输‖socket类来帮助开发者调用
烦。下面我们就来看一个简
是多么的方便。
使用它我们可以很方便的实现网
socket的使用,从而避免了调用
单的例子,从这个简单的例子来
| 络的数据传输。在.net中提供了
socket的动态库来实现socket的麻
看看.net中的socket类实现socket
|
编程思路:在这个简单
实现这两个功能我们需要通
中已经给出了详细的注释这
| 的例子中我们将通过socket来实
过vs.net建立两个实例来完成。
里就不罗嗦了。
| 现文件的网络传输和接收功能。要
一个发送端,一个接收端。由于文
|
| Inherits System.Windows.Forms.Form |
Private Sub Butt
| on1_Click(ByVal sender As Sy
| stem.Object,
|
ByVal e As System.EventA
| rgs) Handles Button1.Click
|
Dim sendsocket As New Ne
| t.Sockets.Socket
|
(Net.Sockets.Add
| ressFamily.InterNetwork,
|
Net.Sockets.SocketType.Strea
| m, Net.Sockets.ProtocolType.Tcp)
|
Dim ipendpio
| nt As New Net.IPEndPoint
|
(Net.IPAddress.P
| arse("192.168.0.1"), 8888)'
| 建立终结点
|
| 'OpenFileDialog1.ShowDialog() |
Dim fs As Ne
| w IO.FileStream("c:p.doc",
|
IO.FileMode.OpenOrCreate, IO
| .FileAccess.Read)'要传输的文件
|
| Dim fssize(fs.Length - 1) As Byte |
Dim strread As New IO.Bi
| naryReader(fs)'流处理要传输的文件
|
'fs.Read(fss
| ize, 0, fssize.Length - 1)
|
strread.Read
| (fssize, 0, fssize.Length -
| 1)
|
sendsocket.Connect(ipend
| piont)'连接远程计算机
|
| sendsocket.Send(fssize)'发送文件 |
| Label1.Text = fs.Length() |
sendsocket.S
| hutdown(Net.Sockets.SocketSh
| utdown.Send)
|
| sendsocket.Close()'关闭本机socket |
| Inherits System.Windows.Forms.Form |
Dim receivesocke
| t As New Net.Sockets.Socket
|
(Net.Sockets.AddressFami
| ly.InterNetwork,
|
| Net.Sockets.SocketType.Stream, |
| Net.Sockets.ProtocolType.Tcp) |
Private Sub Form
| 1_Load(ByVal sender As Syste
| m.Object,
|
ByVal e As System.Ev
| entArgs) Handles MyBase.Load
|
Dim hostipen
| dpiont As New Net.IPEndPoint
|
(Net.IPAddress.P
| arse("192.168.0.1"), 8888)
|
| receivesocket.Bind(hostipendpiont) |
| receivesocket.Listen(2)'监听socket |
Private Sub Button1_Click(By
| Val sender As Object,
|
ByVal e As S
| ystem.EventArgs) Handles But
| ton1.Click
|
Dim recfs As New IO.File
| Stream("p.doc",
|
| IO.FileMode.OpenOrCreate) |
| Dim recbyte(229888) As Byte |
Dim hostsocket As Net.So
| ckets.Socket =
|
Dim newfiles
| tr As New IO.BinaryWriter(re
| cfs)'流写
|
| hostsocket.Receive(recbyte) |
'recfs.Write
| (recbyte, 0, recbyte.Length
| - 1)
|
newfilestr.Write(recbyte
| , 0, recbyte.Length - 1)
|
hostsocket.Shutdown(Net.
| Sockets.SocketShutdown.Receive)
|
通过上面的简单语句我
只可以接受文本文件和图片
你可以传输一个mp3文件,
的音乐可以播放。如果想解
调用底层的socket动态库也
| 们就完成网络文件的发送和接收
文件,对于其他文件的发送和接
再在播放器中打开接收到的mp3
决这个问题你需要使用,net中
可以解决这个问题。
| ,但是这里有一点要注意,此代码
收将导致编码错误,如果你不相信
文件,你会听到只有开头不到2秒
的tcp/ip类或udp类来实现,当然
|
上一页> 下一页>