Helpex - Trao đổi & giúp đỡ Đăng nhập
2

Buổi sáng,

Sau nhiều lần lộn xộn, cuối cùng tôi đã có ứng dụng TCP Listener nhỏ của mình để kết nối với máy chủ của tôi và lắng nghe lưu lượng truy cập.

Tôi có thể kết nối và nhận được phản hồi ban đầu từ cổng nhưng nó không trả lại lưu lượng luồng liên tục, tôi cần phải liên tục theo dõi lưu lượng các cổng để có thể đăng nó lên cơ sở dữ liệu một cách hiệu quả, bất cứ ai có thể giúp tôi cách tôi lặp lại điều này?

Đây là mã của tôi vào lúc này:

Imports System
Imports System.Net
Imports System.Net.Sockets
Imports System.Runtime.InteropServices '   DllImport
Imports System.Security.Principal '  WindowsImpersonationContext
Imports System.Text

Public Class Form1

Private Delegate Sub AppendTextBoxDelegate(ByVal TB As RichTextBox, ByVal txt As String)

Private Sub AppendTextBoxes(ByVal TB As RichTextBox, ByVal txt As String)
    If TB.InvokeRequired Then
        TB.Invoke(New AppendTextBoxDelegate(AddressOf AppendTextBoxes), New Object() {TB, txt})
    Else
        TB.Text = ""
        TB.Text = RichTextBox1.Text + Environment.NewLine + " >> " + txt
    End If
End Sub

Dim clientSocket As New System.Net.Sockets.TcpClient()
Dim serverStream As NetworkStream

Private Sub Button1_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles Button1.Click
    BackgroundWorker1.RunWorkerAsync()
End Sub

Private Sub Form1_Load(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles MyBase.Load
    AppendTextBoxes(RichTextBox1, "Client Started")
End Sub

Private Sub My_BgWorker_DoWork1(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork

    Try
        clientSocket.Connect("192.168.1.22", 21055)
        AppendTextBoxes(RichTextBox1, "Client Socket Program - Server Connected ...")

        Dim serverStream As NetworkStream = clientSocket.GetStream()

        If serverStream.CanRead Then
            Do While clientSocket.Connected
                Dim outStream As Byte() = _
                System.Text.Encoding.ASCII.GetBytes("Message from Client$")
                serverStream.Write(outStream, 0, outStream.Length)
                serverStream.Flush()

                Dim inStream(10024) As Byte
                serverStream.Read(inStream, 0, CInt(clientSocket.ReceiveBufferSize))
                Dim returndata As String = _
                System.Text.Encoding.ASCII.GetString(inStream)
                AppendTextBoxes(RichTextBox1, "Data from Server : " + returndata)
                Console.WriteLine("Data from Server : " + returndata)
            Loop
        Else
            AppendTextBoxes(RichTextBox1, "No Data to Receive")
            clientSocket.Close()
            serverStream.Close()
        End If
    Catch ex As Exception
        MessageBox.Show(Environment.NewLine & ex.Message & Environment.NewLine & ex.StackTrace, "Dumping To Log", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1)
    End Try

End Sub

Private Sub BackgroundWorker1_ProgressChanged(ByVal sender As Object, _
ByVal e As System.ComponentModel.ProgressChangedEventArgs) _
Handles BackgroundWorker1.ProgressChanged

    'AppendTextBoxes(RichTextBox1.Text, "DONE!")
    'ProgBar.Value = e.ProgressPercentage

End Sub

Private Sub BackgroundWorker1_RunWorkerCompleted(ByVal sender As Object, _
ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) _
Handles BackgroundWorker1.RunWorkerCompleted
    If e.Cancelled Then
        MsgBox("Cancelled")
    End If

    Console.WriteLine("Finished Processing - Background Worker 1")
    AppendTextBoxes(RichTextBox1, "Finished Getting Stream!")

End Sub
End Class

Mọi sự giúp đỡ đều được đánh giá rất cao, đây là dự án mà tôi cần phải có trước ngày 1 tháng 1 năm 2015 :(

James

2 hữu ích 4 bình luận 6.3k xem chia sẻ
3

Bạn có điều kiện để chạy trong khi kết nối, điều đó có nghĩa là đúng trong lần đầu tiên. Thay đổi thành:

 Do Until Not Client.Connected 
3 hữu ích 0 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ vb.net tcp tcplistener , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading