田草博客

互联网田草博客


网友交流QQ群:11740834 需注明申请加入原因

微信 公众号:ByCAD

邮箱:tiancao1001x126.com
ByCAD,微信公众号
首页 | 普通 | 电脑 | AutoCAD | VB/VB.NET | FLash | 结构 | 建筑 | 电影 | BIM | 规范 | 软件 | ID
-随机-|-分布-
-博客论坛-|-﨣﨤﨧﨨-
-网站导航-|-规范下载-
-BelovedFLash欣赏-

用户登陆
用户:
密码:
 

站点日历
73 2024 - 3 48
     12
3456789
10111213141516
17181920212223
24252627282930
31


站点统计

最新评论



VB.net绘制code128条形码 Vb.net局域网聊天发送消息
未知 VB.Net局域网传输文件   [ 日期:2015-06-15 ]   [ 来自:本站原创 ]  HTML
VB.Net局域网传输文件

发送端代码
程序代码:[ 复制代码到剪贴板 ]
Imports System.IO
Imports System.Net.Sockets
Imports System.Net
Imports System.Threading

Public Class Form1
    Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
    Dim UDP_Client As New UdpClient
 
    Private Sub btnSend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSend.Click
        If TxtIP.Text = "" Or txtPort.Text = "" Then Exit Sub
        If txtFile.Text = "" Then Exit Sub
        Dim socketSent As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
        Try
            Dim xIpEndPoint As New IPEndPoint(Net.IPAddress.Parse(Trim(TxtIP.Text)), CLng(txtPort.Text))
            Sleep(1000)
            System.Windows.Forms.Application.DoEvents()
            Me.ListBox1.Items.Add("连接成功")
            Dim Fs As New FileStream(txtFile.Text, FileMode.OpenOrCreate, FileAccess.Read)
            Me.ListBox1.Items.Add("文件总字节:" & Fs.Length)
            If Fs.Length < 65507 Then 'UDP发送的最大数据包65507
                Dim File(Fs.Length - 1) As Byte
                Dim StrRead As New BinaryReader(Fs)
                StrRead.Read(File, 0, File.Length)
                UDP_Client.Send(File, File.Length, xIpEndPoint)
                Me.ListBox1.Items.Add("已发送字节数:" & Fs.Length)
            Else
                Me.ListBox1.Items.Add("文件较大,需分包发送。")
                Dim Packet() As Byte
                Dim N As Integer = Fs.Length \ 65500
                Me.ListBox1.Items.Add("分包:" & N + 1 & " 份,每个包大小:65500 字节")
                Dim Y As Integer = Fs.Length Mod 65500
                Me.ListBox1.Items.Add("最后一个包大小:" & Y & " 字节")
                For i As Integer = 0 To N
                    If i = N Then
                        ReDim Packet(Y - 1)
                        Fs.Read(Packet, 0, Y)
                        Sleep(1000)
                    Else
                        ReDim Packet(65499)
                        Fs.Read(Packet, 0, 65500)
                        Sleep(1000)
                    End If
                    UDP_Client.Send(Packet, Packet.Length, xIpEndPoint)
                Next
            End If
            Sleep(1000)
            '发送文件传输完成标志:
            Dim B As Byte() = System.Text.Encoding.Unicode.GetBytes("TcFileComplete")
            UDP_Client.Send(B, B.Length, xIpEndPoint)
            Fs.Close()
        Catch ex As Exception
            MessageBox.Show(ex.ToString)
        End Try
    End Sub
    Private Sub btnOpenFile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOpenFile.Click
        Dim OFD As New OpenFileDialog
        Try
            OFD.ShowDialog()
            Me.txtFile.Text = OFD.FileName
        Catch ex As Exception
            MessageBox.Show(ex.ToString)
        End Try
    End Sub
End Class



接收端代码
程序代码:[ 复制代码到剪贴板 ]
Imports System.IO
Imports System.Net.Sockets
Imports System.Net
Imports System.Threading

Public Class Form1
    Public UDP_Listen As New Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp)
    Public T As Thread
    Public IpEndPoint As IPEndPoint
    Dim Fs As FileStream
    Public Function MB_to_Bytes(ByVal MB As Integer) As Integer
        Dim IntBytes As Integer
        IntBytes = MB * 1024 * 1024
        Return IntBytes
    End Function

    Private Sub Listen()
        Try
            Dim Bytes(65536) As Byte
            Dim NumGet As Integer
            While True
                NumGet = UDP_Listen.Receive(Bytes)
                Debug.Print(NumGet)
                '文件传输完成标志:"TcFileComplete"
                If NumGet = 28 Then
                    Dim NewBytes(27) As Byte
                    Array.Copy(Bytes, 0, NewBytes, 0, 28)
                    If System.Text.Encoding.Unicode.GetString(NewBytes) = "TcFileComplete" Then
                        Debug.Print("TcFileComplete")
                        Fs.Close()
                        MsgBox("文件传输完成!")
                    End If
                Else
                    Fs.Write(Bytes, 0, NumGet)
                End If
            End While
        Catch ex As Exception

        End Try
    End Sub

    Private Sub btnListen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnListen.Click
        If TxtIP.Text = "" Or txtPort.Text = "" Then Exit Sub
        Dim socketSent As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
        Fs = New FileStream(txtFile.Text, FileMode.Create)
        Try
            IpEndPoint = New IPEndPoint(Net.IPAddress.Parse(Trim(TxtIP.Text)), CLng(txtPort.Text))
            UDP_Listen.Bind(IpEndPoint)
            T = New Thread(AddressOf Listen)
            T.Start()
            MessageBox.Show("已经成功启动监听。")
            Me.btnListen.Enabled = False
        Catch ex As Exception
            MessageBox.Show(ex.ToString)
        End Try
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    End Sub
End Class


【VB.Net 局域网传输文件.rar】点击下载此文件


[本日志由 tiancao1001 于 2015-06-17 08:57 AM 编辑]


暂时没有评论
发表评论 - 不要忘了输入验证码哦!
作者: 用户:  密码:   注册? 验证:  防止恶意留言请输入问题答案:3*6=?  
评论:

禁止表情
禁止UBB
禁止图片
识别链接
识别关键字

字体样式 文字大小 文字颜色
插入粗体文本 插入斜体文本 插入下划线
左对齐 居中对齐 右对齐
插入超级链接 插入邮件地址 插入图像
插入 Flash 插入代码 插入引用
插入列表 插入音频文件 插入视频文件
插入缩进符合
点击下载按钮 下标 上标
水平线 简介分割标记
表  情
 
Tiancao Blog All Rights Reserved 田草博客 版权所有
Copyright ©