Umstieg vom VB6 (Winsock Control) zu VB.NET

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von SysOp1.

    Umstieg vom VB6 (Winsock Control) zu VB.NET

    Hallo ihr lieben,
    als ich meine externe Festplatte aufräumen wollte fand ich einen sehr alten Source Code, so alt das er auf Visual Basic 6.0 basiert.
    Mein Vorhaben ist folgendes, ich möchte das Programm in VB.NET erweitern doch um dies zu tun muss ich erstmal den alten Code (VB6) zu VB.NET umschreiben.

    Ich bin völlig verwirrt aber weiß auch schon in etwa weshalb.
    Meine Anwendung in VB6 benutzt das Winsock Control was es in dieser Form in VB.NET nicht mehr gibt wenn ich mich nicht irre.

    Somit komme ich zu diesen Schwierigkeiten (Der Code ist auch völlig durcheinander und erschwert es mir somit viel mehr):

    So sieht der Kopfteil des Codes aus, SockI spielt gleich eine Rolle, nebenbei eine Frage: auch "Public XXXX As XXXX" ist eine veraltete Methode oder, Alternativen?

    Visual Basic-Quellcode

    1. Public SockI As Long
    2. Public BotI As Long
    3. Public SocketQueue As String
    4. Public FreeSockets As String
    5. Public Hpets As String
    6. Public LoadedRollers As String
    7. Public CFHs As Long
    8. Public PickedUpCalls As String
    9. Public DebugActive As Boolean
    10. Public dices As String
    11. Public Wanted As Double


    Und nun habe ich einen Timer namens 'ConntectionTimer', dort kommt SocketI zum Einsatz.

    Visual Basic-Quellcode

    1. Private Sub ConnectionTimer_Timer()
    2. If SockI < 1 Then Exit Sub
    3. For u = 1 To SockI
    4. If socket(u).State = sckConnected Then
    5. socket(u).SendData "@r" & Chr(1)
    6. If Client(u).Close = 1 Then
    7. If Client(u).InRoom > 0 Or Client(u).Publicnum > 0 Then
    8. Hab_Kick u
    9. End If
    10. Client(u).Hotelpos = "H"
    11. socket(u).Close
    12. If Client(u).Name <> "" Then Client(u).Name = ""
    13. If chckLog.Value = 1 Then
    14. If frmMain.chckLog.Value = 1 Then txtLog.Text = txtLog.Text & vbCrLf & "[" & u & "] ›› Closed"
    15. If frmMain.chckLog.Value = 1 Then txtLog.SelStart = Len(txtLog.Text)
    16. End If
    17. Else
    18. Client(u).Close = 1
    19. socket(u).SendData "@r" & Chr(1)
    20. End If
    21. End If
    22. Next u
    23. End Sub


    'Socket' & 'Client' werden als Fehler angezeigt sowie 'sckConnected', beim letzten ist es sicherlich nur die Eigenschaft 'Connected' die sich von selbst erklärt.
    Habe geschaut ob's noch wo anders definiert wird, aber nichts gefunden.

    Code im Winsock Control (VB6): http://pastebin.com/fzMp3XCz

    Ich hoffe jemand kann mir weiterhelfen :)
    Mfg,
    SysOp1

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „SysOp1“ ()

    SysOp1 schrieb:

    auch "Public XXXX As XXXX" ist eine veraltete Methode
    Nö. Set ist die veraltete Variante. Das was du schreibst ist die (IMHO) korrekte, OOP-technisch einwandfreie VB.NET Variante.
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell
    Vielen Dank, dann kann ich diese Punkte so stehen lassen.

    Nun bin ich immer noch beim hauptsächlichen Problem, also meine VB6 Source ist geöffnet in Windows XP Mode.
    Und ich benutze Visual Studio 2013 auf Windows 7 und möchte die Source von VB6 zu VB.NET umschreiben.

    "'Socket' & 'Client' werden als Fehler angezeigt, [...]"
    Ich weiß eigentlich auch ganz genau wieso, 'Socket' = WinSock Control vom VB6 Source Code, in VB.NET gibt es das in dieser Form aber nicht mehr, also über TcpClient? Könnte mir jemand auf die Sprünge helfen :b
    Und für 'Client' ist die Lösung ja simpel oder?

    VB.NET-Quellcode

    1. Dim Client As New TcpClient


    Edit: Nur wüsste ich nicht warum z.B 'Client(u).Publicnum' als Fehler angezeigt wird, 'Client(u).Publicnum' würde ich ja verstehen weil 'Publicnum' noch nirgends definiert wurde, da wäre die Frage - wo sollte das passieren, in VB6 wird's direkt in's WinSock Control geschrieben unter 'Close' z.B folgendes:

    EDIT: OH MAN ICH BIN SELBST DRAUFGEKOMMEN! Das ist mehr als nur einfach gewesen, dennoch vielen Dank! :D
    Doch habe ich wieder ein Problem, aber komme langsam immer weiter auf die Spur des Erfolgs *hehe*

    Visual Basic-Quellcode

    1. Private Sub socket_Close(Index As Integer)
    2. If Index > 0 Then
    3. TimerUpdate(Index).Enabled = False
    4. TimerTeleport1(Index).Enabled = False
    5. TimerTeleport2(Index).Enabled = False
    6. TimerWave(Index).Enabled = False
    7. TimerTalk(Index).Enabled = False
    8. TimerGesture(Index).Enabled = False
    9. TimerDrink(Index).Enabled = False
    10. TimerVanish(Index).Enabled = False
    11. UseTimer(Index).Enabled = False
    12. TimerVote(Index).Enabled = False
    13. TimerDC(Index).Enabled = False
    14. 'client


    Er kann mit Index nichts anfangen, woran könnte es liegen?

    Mfg

    Dieser Beitrag wurde bereits 10 mal editiert, zuletzt von „SysOp1“ ()