2

更新中のテキスト ストリームをクライアントに提供するサーバー アプリケーションの作成に関するヘルプを探しています。私の要件は次のとおりです。

クライアントがサーバー ポート 7878 で情報を要求し、値の初期セットを受信できるようにする必要があります。その後、変更された値が 5 秒ごとに報告されます。私にとっての難点は、別のクライアントを接続することでした。最初のクライアントがまだ実行されている間に、2 番目 (または 3 番目または 4 番目) のクライアントに接続できる必要があります。2 番目のクライアントは初期値を受け取り、同様に更新を開始します。2 つのストリームが互いに完全に独立している必要があります。これは VB.Net および TCP ソケットで可能ですか?

追加する編集:共有できるコードの下にコードの一部を貼り付けました。WriteLog は、私の問題とはあまり関係のない別のサブです。このコードは、クライアントの接続を許可し、別のクライアントの接続を許可しますが、最初のクライアントへのすべての送信は新しい接続で停止します。

    Public Class ServerApp

    Dim serverSocket As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
    Dim clientSocket As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)

Private Sub ServerApp_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    WriteLog(String.Format("Start of form load.."))

    Dim listener As New Thread(New ThreadStart(AddressOf ListenForRequests))
    listener.IsBackground = True
    listener.Start()
End Sub

Private Sub ListenForRequests()

    Dim CONNECT_QUEUE_LENGTH As Integer = 4

    serverSocket.Bind(New IPEndPoint(IPAddress.Any, 7878))
    serverSocket.Listen(CONNECT_QUEUE_LENGTH)
    serverSocket.BeginAccept(New AsyncCallback(AddressOf OnAccept), Nothing)
End Sub

Private Sub OnAccept(ByVal ar As IAsyncResult)
    clientSocket = serverSocket.EndAccept(ar)
    serverSocket.BeginAccept(New AsyncCallback(AddressOf OnAccept), Nothing)
    WriteLog("just accepted new client")

    Try
        clientSocket.Send(Encoding.UTF8.GetBytes("first response on connect"), SocketFlags.None)
        While True
            clientSocket.Send(Encoding.UTF8.GetBytes("string of updates"), SocketFlags.None)
            Thread.Sleep(5000)
        End While
    Catch ex As Exception
        WriteLog(ex.Message)
        WriteLog("Remote host has disconnected")
    End Try

End Sub

End Class
4

1 に答える 1