2012-02-12 5 views
0

IP disconnectorを作成しようとしています。これは、私がTCPtableを作成したテンプレートの一部です。私は切断機能を追加しようとしていました。ただし、切断されることはありません。VB.NET IP disconnector:切断するSetTcpEntryの正しい使い方は何ですか

Dim liste() = {"76.9.24.130" ... ... ...} 
    Dim pdwSize As Integer 
    Dim iRetVal As Integer 
    Dim i As Integer 
    Dim TcpTableRow As MIB_TCPROW 
    Dim pStructPointer As IntPtr = IntPtr.Zero 
    Dim iNumberOfStructures As Integer 
    ListView1.Items.Clear() 
    iRetVal = GetTcpTable(pStructPointer, pdwSize, 0) 
    pStructPointer = Marshal.AllocHGlobal(pdwSize) 
    iRetVal = GetTcpTable(pStructPointer, pdwSize, 0) 
    iNumberOfStructures = Math.Ceiling((pdwSize - 4)/Marshal.SizeOf(GetType(MIB_TCPROW))) 
    For i = 0 To iNumberOfStructures - 1 
     Dim pStructPointerTemp As IntPtr = New IntPtr(pStructPointer.ToInt32() + 4 + (i * Marshal.SizeOf(GetType(MIB_TCPROW)))) 
     TcpTableRow = New MIB_TCPROW() 
     With TcpTableRow 
      .dwLocalAddr = 0 
      .dwState = 0 
      .dwLocalPort = 0 
      .dwRemoteAddr = 0 
      .dwRemotePort = 0 
     End With 
     'Marshal.PtrToStructure(pStructPointerTemp, TcpTableRow) 
     TcpTableRow = CType(Marshal.PtrToStructure(pStructPointerTemp, GetType(MIB_TCPROW)), MIB_TCPROW) 
     ' Process each MIB_TCPROW here 
     'If Not ((Check1.CheckState = System.Windows.Forms.CheckState.Checked) And (GetIpFromLong(TcpTableRow.dwLocalAddr) = "0.0.0.0" Or GetIpFromLong(TcpTableRow.dwLocalAddr) = "127.0.0.1")) Then 
     If Not GetIpFromLong(TcpTableRow.dwRemoteAddr) = "127.0.0.1" And Not GetIpFromLong(TcpTableRow.dwRemoteAddr) = "0.0.0.0" Then 
      'Add the data to the ListView control 
      With TcpTableRow 
       Dim itemAdd As ListViewItem 
       itemAdd = ListView1.Items.Add(GetIpFromLong(.dwLocalAddr)) 
       itemAdd.SubItems.Add(CStr(GetTcpPortNumber(.dwLocalPort))) 
       itemAdd.SubItems.Add(GetIpFromLong(.dwRemoteAddr)) 
       itemAdd.SubItems.Add(CStr(GetTcpPortNumber(.dwRemotePort))) 
       itemAdd.SubItems.Add(GetState(.dwState)) 
      End With 
      '-------------- Kill Connection-------------- 
      If Array.IndexOf(liste, GetIpFromLong(TcpTableRow.dwRemoteAddr)) >= 0 Then 
       TcpTableRow.dwState = 12 
       SetTcpEntry(TcpTableRow) 
      End If 
     End If 
    Next 
+0

こんにちは、誰もがアイデアを持っていますか? – user670186

答えて

0

私はそれを解決するが、私は、これは同じような状況であるかどうかが、私が使用していたかどうかわからないのですCurrPorts

Shell(Application.StartupPath & "\cports /close * * " & GetIpFromLong(TcpTableRow.dwRemoteAddr) & " " & GetTcpPortNumber(TcpTableRow.dwRemotePort)) 
0

を使用して別の解決策を見つけたことができませんでした:接続の私の手段として session = New Socket(,,,)をTCP PORT23経由で私の問題は私も接続が何らかの理由で閉じることができなかったということでした。私は上のCurrPortsの回避策を試しましたが、私はそれが私の期待を満たしていないことがわかりました。代わりに私はTCPClientを使用しています。

 Dim TCPConnection as TCPClient 'Init TCPConnect 

    Private Sub Connect(Byval inIP) 
     Dim PiP = IPAddress.Parse(inIP) 
     Dim iplocal As New System.Net.IPEndPoint(PiP, 23) 
     Try 
      TCPsession = New TcpClient 
      TCPsession.Client.Connect(ipLocal) 
     Catch 
     'On Error Do Nothing 
     End Try 
    End Sub 

    Private Sub Disconnect() 
     TCPsession.Client.Close() 
    End Sub 

このコードは私の問題を解決しましたが、あなたが話していることが何であるかわかりません。

関連する問題