none
如何監聽一個有資料進出的通訊埠 RRS feed

  • 問題

  • 請問各位高手:

     

    如何監聽一個已經連線使用中的通訊埠,並且將輸出入的資料擷取出來?

    因為每次要連線監聽時,都會出現通訊埠已經連線使用,拒絕讓我連線。

    我都是找書上那些Client-Server的程式碼下去修改,但似乎都行不通。

     

    請問有沒有其他可以參考的程式碼?

    或者高手們有別種寫法?

     

    2007年8月10日 下午 09:47

解答

所有回覆

  • Winpcap (Windows Packet Capture and Network Monitoring Library): http://www.winpcap.org/

    2007年8月11日 上午 12:52
    版主
  • 請問這個能使用在 VB.Net中嗎?

    2007年8月11日 上午 03:28
  • 先前討論:

    回覆:如何攔截所有封包程式

     

    含 VB2005 程式碼調整。

    2007年8月11日 上午 05:32
    版主
  • 感謝兩位高手的回答喔。

     

    另外再請教一下:

     

    =================================================================

    Public Sub [Start]()
        If m_Monitor Is Nothing Then
            Try
                m_Monitor = New Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP)
                m_Monitor.Bind(New IPEndPoint(IP, 0))
                m_Monitor.IOControl(SIO_RCVALL, BitConverter.GetBytes(1), Nothing)  '<===到這裡跳到Exception
                m_Monitor.BeginReceive(m_Buffer, 0, m_Buffer.Length, SocketFlags.None, New AsyncCallback(AddressOf OnReceive), Nothing)
            Catch ex As Exception
                m_Monitor = Nothing
                Throw ex
            End Try
        End If
    End Sub

     

    ==========================================================

     

    System.Net.Sockets.SocketException:提供了一個不正確的引數。

     at v2Softwares.PackMon.Monitor.Start() in E:\Sniffer\PackMon.NET\Monitor.vb:line 43

     at v2Softwares.Sniffer:frmMain.OnHostsClick(Object sender, EventArgs e) in E:\Sniffer\Sniffer.NET\frmMain.vb line 327

     

    SocketException 的 ErrorCode 是 10022

     

    以上是我執行璉璉大大介紹的程式後擲出的錯誤訊息,請問這是什麼意思阿?

    我是使用 VS2003 + XP SP2 的環境

     

    2007年8月11日 上午 11:29
  • 我用 VB2005 兩年了,我沒灌 VB2003 。

     

    2007年8月11日 下午 12:45
    版主
  • m_Monitor.IOControl(SIO_RCVALL, BitConverter.GetBytes(1), Nothing) 

     

    我改為

    m_Monitor.IOControl(SIO_RCVALL, BitConverter.GetBytes(2), Nothing) 

     

    這樣就可以執行了,不曉得為何是這樣?

     

    謝謝您,我再試著改看看。

    2007年8月11日 下午 09:15