Hallo,
Ik kan via onderstaande code een bestandje zenden maar dit komt niet altijd correct toe bij de server.
Bij een foto heb ik strepen. Soms komt een bestand wel correct toe
ofwel kan ik het niet openen.
Iemand enig idee wat er fout gaat.

client:
Private Sub sendFile()
Dim fileBuffer As Byte()
Dim fileStream As Stream
fileStream = File.OpenRead(txtFile.Text)
ReDim fileBuffer(fileStream.Length)
fileStream.Read(fileBuffer, 0, fileStream.Length)
Dim clientSocket As New TcpClient(txtIp.Text, 1024)
Dim netWorkStream As NetworkStream
netWorkStream = clientSocket.GetStream()
netWorkStream.Write(fileBuffer, 0, fileStream.Length)
netWorkStream.Close()
End Sub
server:
Private alSockets As ArrayList
Private Sub Server_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim IPHost As IPHostEntry = Dns.GetHostByName(Dns.GetHostName())
MsgBox("My IP address is " & IPHost.AddressList(0).ToString())
alSockets = New ArrayList
Dim thdListener As New Thread(New ThreadStart(AddressOf listenerThread))
thdListener.Start()
End Sub
Public Sub listenerThread()
Dim tcpListener As New TcpListener(IPAddress.Any, 1024)
Dim handlerSocket As Socket
Dim thdstHandler As ThreadStart
Dim thdHandler As Thread
tcpListener.Start()
Do
handlerSocket = tcpListener.AcceptSocket
If handlerSocket.Connected Then
MsgBox(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
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 If
End While
fileStream.Close()
End SyncLock
MsgBox("File Written")
handlerSocket = Nothing
End Sub
thx in advance
Ik kan via onderstaande code een bestandje zenden maar dit komt niet altijd correct toe bij de server.
Bij een foto heb ik strepen. Soms komt een bestand wel correct toe
Iemand enig idee wat er fout gaat.
client:
Private Sub sendFile()
Dim fileBuffer As Byte()
Dim fileStream As Stream
fileStream = File.OpenRead(txtFile.Text)
ReDim fileBuffer(fileStream.Length)
fileStream.Read(fileBuffer, 0, fileStream.Length)
Dim clientSocket As New TcpClient(txtIp.Text, 1024)
Dim netWorkStream As NetworkStream
netWorkStream = clientSocket.GetStream()
netWorkStream.Write(fileBuffer, 0, fileStream.Length)
netWorkStream.Close()
End Sub
server:
Private alSockets As ArrayList
Private Sub Server_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim IPHost As IPHostEntry = Dns.GetHostByName(Dns.GetHostName())
MsgBox("My IP address is " & IPHost.AddressList(0).ToString())
alSockets = New ArrayList
Dim thdListener As New Thread(New ThreadStart(AddressOf listenerThread))
thdListener.Start()
End Sub
Public Sub listenerThread()
Dim tcpListener As New TcpListener(IPAddress.Any, 1024)
Dim handlerSocket As Socket
Dim thdstHandler As ThreadStart
Dim thdHandler As Thread
tcpListener.Start()
Do
handlerSocket = tcpListener.AcceptSocket
If handlerSocket.Connected Then
MsgBox(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
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 If
End While
fileStream.Close()
End SyncLock
MsgBox("File Written")
handlerSocket = Nothing
End Sub
thx in advance