Member 10296419 Ответов: 1

Отправить сокет данных VB.NET


Привет, у меня есть клиент и сервер, и они прекрасно работают.Сервер отправляет файл клиенту,и клиент получает его хорошо, но когда я снова пытаюсь отправить другой файловый сервер и клиент, они теряют связь.Пожалуйста, помогите мне.спасибо

серверный код:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
       Dim imgPath As String = "C:\Users\Sinestic\Desktop\1.exe"
       Dim Client As New TcpClient("127.0.0.1", 9999)
       Dim ByteArray() As Byte ' Data buffer
       Dim Fs As FileStream = New FileStream(imgPath, FileMode.Open, FileAccess.Read)
       Dim Reader As New BinaryReader(Fs)
       Try
           Dim Writer As New BinaryWriter(Client.GetStream) ' Get socket's stream
           'send size of file
           Writer.Write(CInt(Fs.Length))
           'Send the file data
           Do
               'read data from file
               ByteArray = Reader.ReadBytes(2048)
               'write data to Network Stream
               Writer.Write(ByteArray)
           Loop While ByteArray.Length = 2048
           'make sure all data is sent
           Writer.Flush()
           Writer.Close()
           Reader.Close()
       Catch ex As Exception
           MessageBox.Show(ex.ToString)
       End Try

   End Sub


клиентский код:
<pre> Client = Listener.AcceptTcpClient()
        Dim Reader As BinaryReader
        Dim ReadBuffer(PACKET_SIZE - 1) As Byte
        Dim NData As Int32
        Dim MStream As MemoryStream
        Dim LData As Int32
        Reader = New BinaryReader(Client.GetStream)
        ' Read Length of data (Int32)
        NData = Reader.ReadInt32
        ' Now comes the data, save it in a memory stream
        MStream = New MemoryStream
        While NData > 0
            LData = Client.GetStream.Read(ReadBuffer, 0, PACKET_SIZE)
            MStream.Write(ReadBuffer, 0, LData)
            NData -= LData
        End While
        Timer1.Enabled = False
        'PictureBox1.Image = Image.FromStream(MStream)
        'PictureBox1.Image.Save("C:\Users\Sinestic\Desktop\150.jpg", System.Drawing.Imaging.ImageFormat.Jpeg)
        Dim file As New FileStream("C:\Users\Sinestic\Desktop\1000.exe", FileMode.Create, FileAccess.Write)
        MStream.WriteTo(file)
        file.Close()


Что я уже пробовал:

Hi i have client and server and work fine.Server send file to client and client receive it good,But when i try again to resend another file server and client they lose communication.Please Help me?thks

1 Ответов

Рейтинг:
0

pdoxtader

Оказывается, что звонит писатель.Close() (BinaryWriter.Close) также закрывает базовый поток, который в данном случае является вашим TcpClient.

https://msdn.microsoft.com/en-us/library/system.io.binarywriter.close(v=против 110).aspx

- Пит