Women in Technology

Hear us Roar



Article:
  Using Network Streams
Subject:   Large Files
Date:   2004-09-27 05:02:43
From:   Sefai
Your code does not work for files larger than 8192 bytes (default tcpclient send buffer size)


Reform your article so that it includes a working sample of files larger than 8k.

Full Threads Oldest First

Showing messages 1 through 1 of 1.

  • Re:Large Files
    2006-10-26 11:31:32  vaibe [View]

    hello there...
    just combine few concepts of network streams and you will be able to send larger files also(like .bmp,.jpeg etc..)
    server(receiving only)
    -----------------------
    Const portNo As Integer = 500
    Const BUFFER_SIZE As Integer = 10
    Dim localAdd As System.Net.IPAddress = IPAddress.Parse("127.0.0.1")
    Dim listener As New TcpListener(localAdd, portNo)
    listener.Start()
    Dim tcpClient As TcpClient = listener.AcceptTcpClient()
    Dim NWStream As NetworkStream = tcpClient.GetStream
    Dim bytesToRead(tcpClient.ReceiveBufferSize) As Byte
    Dim numBytesRead, j As Integer
    '---read incoming stream and writing the bytes to file
    Const FILE_NAME = "d:\image_copy.bmp"
    Dim fs As System.IO.FileStream
    fs = New FileStream(FILE_NAME, FileMode.CreateNew, FileAccess.Write)
    Do
    numBytesRead = NWStream.Read(bytesToRead, 0, BUFFER_SIZE)
    fs.Write(bytesToRead, 0, numBytesRead)
    Loop Until Not NWStream.DataAvailable
    fs.Close()
    tcpClient.Close()
    listener.Stop()
    MsgBox("received")

    client(sending a .bmp file)
    ---------------------------

    Const portNo = 500
    Const FILE_NAME = "d:\image.bmp"
    Dim tcpClient As New System.Net.Sockets.TcpClient
    tcpClient.Connect("127.0.0.1", portNo)
    Dim NWStream As NetworkStream = tcpClient.GetStream
    Dim fs As FileStream
    Dim br As BinaryReader
    Dim numBytesRead As Integer
    fs = New FileStream(FILE_NAME, FileMode.Open, FileAccess.Read)
    br = New BinaryReader(fs)
    Dim bytesToSend(br.BaseStream.Length) As Byte
    numBytesRead = fs.Read(bytesToSend, 0, bytesToSend.Length)
    NWStream.Write(bytesToSend, 0, numBytesRead)
    MsgBox("sent!!")
    fs.Close()
    tcpClient.Close()
    -----------------------------------------
    hope it will help you :)