как обеспечить отправку нескольких последовательных данных с сервера на клиент - PullRequest
0 голосов
/ 22 апреля 2019

Моя программа разделена на две части: сервер и клиент.когда клиент подключается к серверу, в это время сервер должен отправить клиенту цифры от 1 до 10.но отправляется только одно или два первых числа.

это переменные:

Dim pClient As TcpClient
Dim Listener As TcpListener
Dim mre As New Threading.ManualResetEvent(False)

это сторона сервера: в подпрограмме AcceptClient я создаю цикл for для отправки чисел от 1 до 10клиенту.

Sub Main()
    mre.Reset()
    Listener = New TcpListener(IPAddress.Any, 6000)
    Listener.Start()
    Listener.BeginAcceptTcpClient(New AsyncCallback(AddressOf AcceptClient), Listener)
    mre.WaitOne()
End Sub

Sub AcceptClient(ByVal ar As IAsyncResult)
    pClient = Listener.EndAcceptTcpClient(ar)
    Listener.BeginAcceptTcpClient(New AsyncCallback(AddressOf AcceptClient), Listener)
    For i = 1 To 10
        Send(i)
    Next
End Sub

Public Sub Send(ByVal Messsage As String)
    Dim sendMessage As StreamWriter = New StreamWriter(pClient.GetStream)
    sendMessage.WriteLine(Messsage)
    sendMessage.Flush()
End Sub

и это на стороне клиента:

Sub Main()
    mre.Reset()
    Try
        client = New TcpClient("localhost", 6000)
        client.GetStream.BeginRead(New Byte() {0}, 0, 0, New AsyncCallback(AddressOf read), client.GetStream)
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
    mre.WaitOne()
End Sub

Sub read(ByVal ar As IAsyncResult)
    Try
        Dim ns As NetworkStream = ar.AsyncState
        Dim l As Int16 = ns.EndRead(ar)
        Dim msg As String = New StreamReader(ns).ReadLine
        Console.WriteLine(msg)
        ns.BeginRead(New Byte() {0}, 0, 0, New AsyncCallback(AddressOf read), ns)
    Catch ex As Exception
        MsgBox(ex.Message)
        Exit Sub
    End Try
End Sub

Я хочу знать, как я могу исправить этот код, чтобы отправить все эти номера?

...