hello all
i have a few questions about tcp file transfer
i have a two programs one sends a file the other one receives
the source for the receiving program:
i can receive text files without any problemsCode:Imports System.Threading Imports System.Net Imports System.Net.Sockets Imports System.Text Imports System.IO Public Class Form1 Inherits System.Windows.Forms.Form Private alSockets As ArrayList #Region " Windows Form Designer generated code " Public Sub New() MyBase.New() 'This call is required by the Windows Form Designer. InitializeComponent() 'Add any initialization after the InitializeComponent() call End Sub 'Form overrides dispose to clean up the component list. Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) If disposing Then If Not (components Is Nothing) Then components.Dispose() End If End If MyBase.Dispose(disposing) End Sub 'Required by the Windows Form Designer Private components As System.ComponentModel.IContainer 'NOTE: The following procedure is required by the Windows Form Designer 'It can be modified using the Windows Form Designer. 'Do not modify it using the code editor. Friend WithEvents lbConnections As System.Windows.Forms.ListBox Friend WithEvents lblStatus As System.Windows.Forms.Label <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() Me.lblStatus = New System.Windows.Forms.Label Me.lbConnections = New System.Windows.Forms.ListBox Me.SuspendLayout() ' 'lblStatus ' Me.lblStatus.Location = New System.Drawing.Point(24, 16) Me.lblStatus.Name = "lblStatus" Me.lblStatus.Size = New System.Drawing.Size(136, 32) Me.lblStatus.TabIndex = 0 Me.lblStatus.Text = "My IP address:" ' 'lbConnections ' Me.lbConnections.Location = New System.Drawing.Point(16, 56) Me.lbConnections.Name = "lbConnections" Me.lbConnections.Size = New System.Drawing.Size(144, 173) Me.lbConnections.TabIndex = 1 ' 'Form1 ' Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13) Me.ClientSize = New System.Drawing.Size(176, 266) Me.Controls.Add(Me.lbConnections) Me.Controls.Add(Me.lblStatus) Me.Name = "Form1" Me.Text = "Form1" Me.ResumeLayout(False) End Sub #End Region Public Sub listenerThread() Dim tcpListener As New TcpListener(8080) Dim handlerSocket As Socket Dim thdstHandler As ThreadStart Dim thdHandler As Thread tcpListener.Start() Do handlerSocket = tcpListener.AcceptSocket() If handlerSocket.Connected Then lbConnections.Items.Add( _ handlerSocket.RemoteEndPoint.ToString() + " connected.") SyncLock (Me) alSockets.Add(handlerSocket) End SyncLock thdstHandler = New ThreadStart(AddressOf handlerThread) thdHandler = New Thread(thdstHandler) thdHandler.Start() End If Loop End Sub Public Sub handlerThread() Dim handlerSocket As Socket handlerSocket = alSockets(alSockets.Count - 1) Dim networkStream As NetworkStream = New NetworkStream(handlerSocket) Dim blockSize As Int16 = 1024 Dim thisRead As Int16 Dim dataByte(blockSize) As Byte SyncLock Me ' Only one process can access the ' same file at any given time Dim fileStream As Stream fileStream = File.OpenWrite("c:\upload.txt") While (True) thisRead = networkStream.Read(dataByte, 0, blockSize) fileStream.Write(dataByte, 0, dataByte.Length) If thisRead = 0 Then Exit While End While fileStream.Close() End SyncLock lbConnections.Items.Add("File Written") handlerSocket = Nothing End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim IPHost As IPHostEntry IPHost = Dns.GetHostByName(Dns.GetHostName()) lblStatus.Text = "My IP address is " + IPHost.AddressList(0).ToString() alSockets = New ArrayList Dim thdListener As New Thread(New ThreadStart(AddressOf listenerThread)) thdListener.Start() End Sub End Class
1. how do i receive binary files?????????
i only need to change receiving programs code, sender program has everythinng configured for text/binary
my second question:
2. how can i determine sent file information such as name and size?
thanks




Reply With Quote