分类

  • 软件天地

  • 运用 .net 中的 socket 实现文件传输‖
    socket类来帮助开发者调用
    烦。下面我们就来看一个简
    是多么的方便。
    使用它我们可以很方便的实现网
    socket的使用,从而避免了调用
    单的例子,从这个简单的例子来

    络的数据传输。在.net中提供了
    socket的动态库来实现socket的麻
    看看.net中的socket类实现socket


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


      发送端                                                                       

      Public Class Form1                                          
        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)
        '实例化socket                                                      

          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()                    
          fs.Close()                                                  
          sendsocket.S
    hutdown(Net.Sockets.SocketSh
    utdown.Send)
        '关闭发送连接                                                            
          sendsocket.Close()'关闭本机socket            
        End Sub                                                            
      End Class                                                           

        接收端                                                                   

      Public Class Form1                                          
        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)  
        '建立远程计算机的的socket                                          
          receivesocket.Listen(2)'监听socket      
        End Sub                                                            

        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 =
        receivesocket.Accept()                              
        '同意和发送端计算机建立连接                                              
          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)
          recfs.Close()                                            
          hostsocket.Shutdown(Net.
    Sockets.SocketShutdown.Receive)
          hostsocket.Close()                                  
        End Sub                                                            
      End Class                                                           

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


    上一页 下一页




    map