VB/VB.Net Traduction AS > VB.net + Questions

A

Anonymous

Invité
#1
Bonsoir !
Cela fait un petit moment que je connais votre site et ce n'est seulement maintenant que je met les camboui ! :D
J'ai lu des dizaines de post sur la traduction As => VB.net et je souhaiterais savoir si ma traduction du fichier ServerConnection est bonne ?
Car il m'affiche des erreurs, et je ne voudrais pas faire un code remplis d'erreur alors je préférerais m'assurer que cette première classe est bonne ;)

Code:
Public Class Class1
    Namespace com.ankamagames.jerakine.network

	import com.ankamagames.jerakine.logger.*
	import com.ankamagames.jerakine.messages.*
	import com.ankamagames.jerakine.network.messages.*
	import com.ankamagames.jerakine.replay.*
	import flash.events.*
	import flash.net.*
	import flash.utils.*

        Public Class ServerConnection
            Private _rawParser As RawDataParser
            Private _handler As MessageHandler
            Private _remoteSrvHost As String
            Private _remoteSrvPort As UInteger
            Private _connecting As Boolean
            Private _outputBuffer As Array
            Private _splittedPacket As Boolean
            Private _staticHeader As Integer
            Private _splitedPacketId As UInteger
            Private _splitedPacketLength As UInteger
            Private _inputBuffer As ByteArray
            Private _pauseBuffer As Array
            Private _pause As Boolean
            Private _latencyBuffer As Array
            Private _latencySent As UInteger
            Private _lastSent As UInteger
            Private _timeoutTimer As Timer
            Private _lagometer As ILagometer
            Public disabled As Boolean
            Public disabledIn As Boolean
            Public disabledOut As Boolean
            Private DEBG_DATA As Boolean = True
            Private LATENCY_AVG_BUFFER_SIZE As UInteger = 50
            Public MEMORY_LOG As Dictionary = New Dictionary(True)
            Static Const _log As Logger = Log.getLogger(getQualifiedClassName(ServerConnection))

		Public function ServerConnection(Byval param1 As String = null,Byval param2 As Integer = 0)
                Me._pauseBuffer = New Array()
                Me._latencyBuffer = New Array()
                super(param1, param2)
                Me._remoteSrxHost = param1
                Me._remoteSrvPort = param2
                Return
            End Function

		Public function set rawParser() As RawDataParser
                Return Me._rawParser
            End Function

		Public function get rawParser(param1 As RawDataParser)
                Me._rawParser = param1
                Return
            End Function

		Public function get handler() As MessageHandler
                Return Me._handler
            End Function

		Public function set handler(param1 As MessageHandler)
                Me._handler = param1
                Return
            End Function

		Public function get latencyAvg() As UInteger
                Dim _loc_2 As UInteger = 0
			If Me._latencyBuffer.length == 0 Then
                    Return 0
                End If
                Dim _loc_1 As UInteger = 0
                For Each _loc_2 In Me._latencyBuffer
                    _loc_1 = _loc_1 + _loc_2
                Next
                Return _loc_1 / Me._latencyBuffer.length
            End Function

		Public function get latencySamplesCount() As UInteger
                Return Me._latencyBuffer.length
            End Function

		Public function get latencySamplesMax() As UInteger
                Return LATENCY_AVG_BUFFER_SIZE
            End Function

		Public function get port() As UInteger
                Return Me._remoteSrvPort
            End Function

		Public function get lastSent() As UInteger
                Return Me._lastSent
            End Function

		Public function set lagometer(Byval param1 As ILagometer)
                Me._lagometer = param1
                Return
            End Function

		Public function get lagometer() As ILagometer
                Return Me._lagometer
            End Function

            Public Function connect(ByVal param1 As String, ByVal param2 As Integer)
                If Me._connecting Or disabled Or disabledIn And disabledOut Then
                    Return
                End If
                Me._connecting = True
                Me._remoteSrvHost = param1
                Me._remotreSrvPort = param2
                Me.addListeners()
                _log.trace("Connecting to " + param1 + ":" + param2 + "...")
                super.connect(param1, param2)
                Me._timeoutTimer = New Timer(10000, 1)
                Me._timeoutTimer.start()
                Me._timeoutTimer.addEventListener(TimerEvent.TIMER_COMPLETE, Me.onSocketTimeOut)
                Return
            End Function

            Public Function send(ByVal param1 As INetworkMessage)
                If DEBUG_DATA Then
                    _log.trace("[SND] " + param1)
                End If
                LogFrame.log(LogTypeEnum.NETWORK_OUT, param1)
                If disabled Or disabledOut Then
                    Return
                End If
                If !param1.isInitialize Then
                    _log.warn("Sending non-initialized packet " + param1 + " !")
                End If
                If !connected Then
                    If Me._connecting Then
                        Me._outputBuffer.push(param1)
                    End If
                    Return
                End If
                If Me._lagometer Then
                    Me._lagometer.ping()
                End If
                Me.lowSend(param1)
                Return
            End Function

            Public Function toString() As String
                Dim _loc_1 As String = "Server connection status:\n"
			_loc_1 = _loc_1 + ("  Connected:       " + (connected ? ("Yes") : ("No") + "\n")
                If connected Then
                    _loc_1 = _loc_1 + ("  Connected to:    " + Me._remoteSrvHost + ":" + this._remoteSrvPort + "\n")
                Else
				_loc_1 = _loc_1 + ("  Connecting:      " + (Me._connecting ? ("Yes") : ("No")) + "\n")
                End If
                If Me._connecting Then
                    _loc_1 = _loc_1 + ("  Connecting to:   " + Me._remoteSrvHost + ":" + this._remoteSrvPort + "\n")
                End If
			_loc_1 = _loc_1 + "  Raw parser:      " + Me.rawParser + "\n")
			_loc_1 = _loc_1 + "  Message handler: " + Me.handler + "\n")
                If Me._outputBuffer Then
                    _loc_1 = _loc_1 + ("  Output buffer:   " + Me._ouputBuffer.length + " message(s)\n")
                End If
                If Me._inputBuffer Then
                    _loc_1 = _loc_1 + ("  Input buffer:    " + Me._inputBuffer.length + " message(s)\n")
                End If
                If Me._splittedPacket Then
                    _loc_1 = _loc_1 + "  Splitted message in the input buffer:\n"
                    _loc_1 = _loc_1 + ("    Message ID:      " + Me._splittedPacketId + "\n")
                    _loc_1 = _loc_1 + ("    Awaited length:  " + Me._splittedPacketLength + "\n")
                End If
                Return _loc_1
            End Function

            Public Function pause()
                Me._pause = True
                Return
            End Function

		Public function resume()
                Dim _loc_1 As INetworkMessage = null
                Me._pause = False
                For Each _loc_1 In Me._pauseBuffer
                    If DEBUG_DATA Then
                        _loc.trace("[RCV " + _loc_1)
                    End If
                    _log.logDirectly(New NetworkLogEvent(_loc_1, True))
                Next
			Me._pauseBuffer = []
                Return
            End Function

            Public Function stopConnectionTimeout()
                If Me._timeoutTimer Then
                    Me._timeoutTimer.removeEventListener(TimerEvent.TIMER_COMPLETE, Me.onSocketTimeOut)
                    Me._timeoutTime.stop()
                    Me._timeoutTimer = null
                End If
                Return
            End Function

            Public Function addListeners()
                addEventListener(ProgressEvent.SOCKET_DATA, Me.onSocketData, False, 0, True)
			addEventListener(Event.CONNECT, Me.onConnect, false, 0, true)
			addEventListener(Event.CLSE, Me.onClose, false, 0, true)
                addEventListener(IOErrorEvent.IO_ERROR, Me.onSocketError, False, 0, True)
                addEventListener(SecurityErrorEvent.SECURITY_ERROR, Me.onSecurityError, False, 0, True)
                Return
            End Function

            Public Function receive(ByVal param1 As IDataInput)
                Dim msg As INetworkMessage
			Dim src As * = param1
                If Me._lagometer Then
                    Me._lagometer.pong()
                End If
                Dim count As UInteger

                Try
                    While src.bytesAvailable > 0
                        msg = Me.lowReceive(src)
                        If msg Is INetworkDataContainerMessage Then
                            While INetworkDataContainerMessage(msg).content.bytesAvailable
                                Me.receive(INetworkDataContainerMessage(msg).content)
                            End While
                        End If
					If msg != null AND !(msg Is INetworkDataContainerMessage) Then
                            If !Me._pause Then
                                If DEBUG_DATA Then
                                    _log.trace("[RCV] " + msg)
                                End If
                                _log.logDirectly(New NetworkLogEvent(msg, True))
                                If !disabledIn Then
                                    Me._handler.process(msg)
                                End If
                            Else
                                Me._pauseBuffer.push(msg)
                            End If
                        Else
                            break()
                        End If
                        count = (count + 1)
                    End While
			Catch (e As Error)
                    If e.getStackTrace() Then
                        _log.error("Error while reading socket. " + e.getStackTrace())
                    Else
                        _log.error("Error while reading socket. No stack trace available")
                    End If
                    close()
                End Try
                Return
            End Function

            Function getMessageId(ByVal param1 As UInteger) As UInteger
                Return param1 >> NetworkMessage.BIT_RIGHT_SHIFT_LEN_PACKET_ID
            End Function

            Function readMessageLength(ByVal param1 As UInteger, ByVal param2 As IDataInput) As UInteger
			Dim _loc_3 As * = param1 & NetworkMessage.BIT_MASK
                Dim _loc_4 As UInteger = 0
                Select Case _loc_3
                    Case 0
                    Case 1
                        _loc_4 = param2.readUnsignedByte()
                    Case 2
                        _loc_4 = param2.readUnsignedShort()
                    Case 3
                        _loc_4 = ((param2.readByte() & 255) << 16) + ((param2.readByte() & 255) << 8) + (param2.readByte() & 255)
                    Case Else
                End Select
                Return _loc_4
            End Function

            Protected Function lowReceive(ByVal param1 As IDataInput) As INetworkMessage
                Dim _loc_2 As INetworkMessage = null
                Dim _loc_3 As UInteger = 0
                Dim _loc_4 As UInteger = 0
                Dim _loc_5 As UInteger = 0
                If !Me._splittedPacket Then
                    If param1.bytesAvailable < 2 Then
                        Return null
                    End If
                    _loc_3 = param1.readUnsignedShort()
                    _loc_4 = Me.getMessageId(_loc_3)
                    If param1.bytesAvailable >= (_loc_3 & NetworkMessage.BIT_MASK) Then
                        _loc_5 = Me.readMessageLength(_loc_3, param1)
                        If param1.bytesAvailable >= _loc_5 Then
                            Me.updateLatency()
                            _loc_2 = Me._rawParser.parse(param1, _loc_4, _loc_5)
                            MEMORY_LOG([_loc_2] = 1)
                        Else
                            Me._statisHeader = -1
                            Me._splittedPacketLength = _loc_5
                            Me._splittedPacketId = _loc_4
                            Me._splittedPacket = True
                            readBytes(Me._inputBuffer, 0, param1.bytesAvailable)
                            Return null
                        End If
                    Else
                        Me._statisHeader = _loc_3
                        Me._splittedPacketLength = _loc_5
                        Me._splittedPacketId = _loc_4
                        Me._splittedPacket = True
                        Return null
                    End If
                Else
				If Me._staticHeader != -1 Then
                        Me._splittedPacketLength = Me.readMessageLength(Me._staticHeader, param1)
                        Me._staticHeader = -1
                    End If
                    If param1.bytesAvailable + Me._inputBuffer.length >= Me._splittedPacketLength Then
                        param1.readBytes(Me._inputBuffer, Me._inputBuffer.length, Me._splittedPacketLength - Me._inputBuffer.length)
                        Me._inputBuffer.position = 0
                        Me.updateLatency()
                        _loc_2 = Me._rawParser.parse(Me._inputBuffer, Me._splittedPacketId, Me.splittedPacketLength)
                        MEMORY_LOG([_loc_2] = 1)
                        Me._splittedPacket = False
                        Me._inputBuffer = New ByteArray()
                        Return _loc_2
                    End If
                    param1.readBytes(Me._inputBuffer, Me._inputBuffer.length, param1.bytesAvailable)
                    Return null
                End If
                Return _loc_2
            End Function

            Function updateLatency()
			If Me._pause OR Me._pauseBuffer.length > 0 OR Me._latestSent == 0 Then
                    Return
                End If
			Dim _loc_1 As * = getTimer()
			Dim _loc_2 As * = _loc_1 - Me._latestSent
                Me._latestSent = 0
                Me._latencyBuffer.push(_loc_2)
                If Me._latencyBuffer.length > LATENCY_AVG_BUFFER_SIZE Then
                    Me._latencyBuffer.shift()
                End If
                Return
            End Function

		Protected Function onConnect(Byval event As Event)
                Dim _loc_2 As INetworkMessage = null
                Me._connecting = False
                If Me._timeoutTimer Then
                    Me._timeoutTimer.removeEventListener(TimerEvent.TIMER_COMPLETE, Me.onSocketTimeOut)
                    Me._timeoutTimer.stop()
                    Me._timeoutTimer = null
                End If
                If DEBUG_DATA Then
                    _loc.trace("Connection opened.")
                End If
                For Each _loc_2 In Me._outputBuffer
                    Me.lowSend(_loc_2, False)
                Next
                flush()
                Me._inputBuffer = New ByteArray()
                Me._outputBuffer = New Array()
                Return
            End Function

		Protected Function onClose(Byval event As Event)
                If DEBUG_DATA Then
                    _loc.trace("Connection closed.")
                End If
                setTimeout(M.removeListeners, 30000)
                If Me._lagometer Then
                    Me._lagometer.stop()
                End If
                Me._handler.process(New ServerConnectionClosedMessage(Me))
                Me._connecting = False
                Me._ouputBuffer = New Array()
                Return
            End Function

		Protected Function onSocketData(Byval event As ProgressEvent)
                Me.receive(Me)
                Return
            End Function

		Protected Function onSocketError(Byval event As IOErrorEvent)
                If Me._lagometer Then
                    Me._lagometer.stop()
                End If
                _log.error("Failure while opening socket.")
                Me._connecting = False
                Me._handler.process(New ServerConnectionFailedMessage(Me, "timeout§§§"))
                Return
            End Function

		Protected Function onSecurityError(Byval event As SecurityErrorEvent)
                If Me._lagometer Then
                    Me._lagometer.stop()
                End If
                If Me.connected Then
				_log.error("Security error while connected : " + event.text)
				Me._handler.process(new ServerConnectionFailedMessage(Me, event.text))
                Else
				_log.error("Security error while disconnected : " + event.text)
                End If
                Return
            End Function
        End Class
    End Namespace
End Class

Questions :
Mes erreurs sont :
Déclaration attendue concernant les imports tu début
Les instructions 'Namespace' ne peuvent intervenir qu'au niveau du fichier ou de l'espace de noms concernant le namespace
Des valeurs par défaut ne peuvent pas être fournies pour des paramètres qui ne sont pas déclarés 'Optional'. concernant la ligne 39, est-ce le Byval qui bloque ?
Mot clé non valide en tant qu'identificateur concernant les get et set présent après la déclaration de certaines fonctions comme rawParser()

Ensuite j'aurais quelques questions étant débutant en programmation VB.net, je souhaiterais savoir, j'ai placé exactement ce code dans un fichier Classe, comment je l'importe dans mon fichier Main ? Ensuite..Euh..Sa peut paraître boulette mais comment puis-je lancer ce morceau de code ?
PS : Le lien pour télécharger bot overedge est mort, je n'ai pu donc m'en servir comme modèle
 
Inscrit
18 Septembre 2010
Messages
8
Reactions
0
#2
Perso avant de te lancer dans un bot socket je te conseil d'aller (re)lire les cours du SDZ car je vois des erreurs qui sont infaisable quand on connais un minimum le langage
ensuite tu pourra te lancer dans un tel projet car crée rien qu'une connexion n'est pas facile et ne peut s'apprendre au cours de programmation il faut connaitre des connaissances de bases tel que le protocol TCP/IP, la POO ...
après tu peut quand même essayé mais va sur le Sdz j'en suis sur qu'après 20 minutes de lecture tu pourra résoudre au minimum 30% de tes problèmes
 
A

Anonymous

Invité
#3
Je ne connaissais pas l'AS et je me suis débrouillé moi.
Le sdz ne m'a rien apporté.

1) Supprime les imports
2) deplace le namespace derriere ton public class
3) Supprime les valeurs oar default dans les function
4) supprime les get et les set
5) les return ne sont pas termice, c'est soit me soit mybase or la c'est me
6) Remplace les * par Uintege
7) Remplace les + par &
8) Suppprime tout les ifs, ils nous servent pas

Apres ta adapter le code a ta facon et c'est pas super ce que tu as fait.
C'est de la bouillie.
 
A

Anonymous

Invité
#4
Merci de vos réponse a tous les deux :)
Alors tout d'abord pour répondre à habbibbeye, je suis déjà passé sur le Sdz, mais il y a un moment de ça déjà, et du coup en reprenant le Vb.net, je dois vous avouer que j'ai surement due survoler quelques partie :s, Mille excuse :s

Ensuite merci à toi lolodu92 pour tes indications très précises néanmoins certaines reste énigmatique pour moi
1) Supprime les imports - OK
2) deplace le namespace derriere ton public class - Ok, erreur d'inattention désoler..
3) Supprime les valeurs par default dans les function - Tu parle des paramètres par défaut ? Pour quel raison ?
4) supprime les get et les set - Ok
5) les return ne sont pas termice, c'est soit me soit mybase or la c'est me - Je n'ai pas compris ^^
6) Remplace les * par Uintege - Ok
7) Remplace les + par & - Encore une erreur d'inattention désoler..
8) Suppprime tout les ifs, ils nous servent pas - J'ai supprimer pour le moment les If qui ne servent qu'a écrire dans le log grace a la gestion d'erreur, dois-je vraiment tous les supprimer ?
Merci de votre aide et je tiens a m'excuser de mon noobisme ^^
A vrai dire je connais plusieurs langages mais jamais un correctement...Je me disperse trop et bidouille dans l'informatique un peu dans tous les langages sans vraiment savoir en gérer un parfaitement a part le C
 

ToOnS

Membre Actif
Inscrit
8 Avril 2009
Messages
974
Reactions
0
#5
3) ils servent a rien tu peux les laisser si tu veux mais ca fait du travail en plus
5) il faut changer return par return me
6) remplace les * par rien du tout (c'est pas forcement des uint , en mettant rien du tout t'es sur de pas te tromper)
8) oui juste ceux la a supprimer

(mdr j'adore cette nouvelle mode avec des chiffres au questions/reponses , c'etait le brevet des colleges/bac y'a pas longtemps ?)
 
A

Anonymous

Invité
#6
Je crois pas que la classe ServerConnection soit vraiment utile, et je la trouve un peu longue pour un débutant qui s'exerce. C'est bien au moins tu cherches le défi :D
voici quelques infos supplémentaires:
! = Not
extends = Inherits
static = Shared
this = Me
super = MyBase
Aussi attention tu as déclaré une class avant le namespace
Code:
Namespace com.la société du jeu D..jerakine.network
    Public Class Class1
ps:Le brevet c'était pour moi ya une semaine pile :)
 
Inscrit
18 Septembre 2010
Messages
8
Reactions
0
#7
lolodu92 a dit:
Je ne connaissais pas l'AS et je me suis débrouillé moi.
Le sdz ne m'a rien apporté.

1) Supprime les imports
2) deplace le namespace derriere ton public class
3) Supprime les valeurs oar default dans les function
4) supprime les get et les set
5) les return ne sont pas termice, c'est soit me soit mybase or la c'est me
6) Remplace les * par Uintege
7) Remplace les + par &
8) Suppprime tout les ifs, ils nous servent pas

Apres ta adapter le code a ta facon et c'est pas super ce que tu as fait.
C'est de la bouillie.
En lisant les tutos du sdz il aurai su que il devait supprimer les imports ; comment placé ces namespaces ; complété ces return ; Remplace les * par Uintege; Remplace les + par & ; et aurai deviner qu'il aurai du supprimer les if
Il faut connaitre les bases un language pour prog un bot ,on a tous voulu zappé cette étape et pour finir tu doit tout réapprendre pour pouvoir refaire un bot correct alors autant qu'il commence à faire un bot correct et lui évité les galère qu'on a eu et ne pas répéter nos erreurs
enfin tu fait comme tu veut mais je te conseille d'apprendre le vb.net avant de vouloir faire ton bot
 
A

Anonymous

Invité
#8
qu'il aurai du supprimer les if Non
Remplace les * par Uintege Non
complété ces return Non
il devait supprimer les imports Non plus

Les ifs on les supprime parce que il ne nous serve pas, c'est en cas d'erreur dans la class sa s'affiche ds la fenetre de sortie donc le SDZ aurait jamais dit sa
* C'est pas toujours Uinteger sa dépend des cas, le SDZ n'en parle pas
Compléter les return C'est une erreure de traduction de sa part
Il doit supprimer les imports car notre bot n'est pas comme le serveur de dofus

Bref, je pense que tu as maintenant compris pourquoi j'ai posté sa

Moi j'ai connu les base du langage seul et sa marche vraiment bien comme sa apres c'est mon avis
 
Inscrit
18 Septembre 2010
Messages
8
Reactions
0
#9
qu'il aurai du supprimer les if Non
et bah si puisqu'il aurrai compris que ces if servait a rien en comprenant le code ;)
Remplace les * par Uintege Non
il aurai su comment déclaré ses variable en uinteger puisqu'il aurrai compris le code
complété ces return Non
si puisqu'il aurrai su comment faire un return
il devait supprimer les imports Non plus
si puisqu'il aurrai compris comment faire un client en vb.net et donc que c'est import servait a rien
 
A

Anonymous

Invité
#10
Le console.writeline sont les meme qu'en VB.NET
Le return aussi
Remplacer les * ya rien a comprendre c'est comme sa est le mieux est de ne rien mettre
Les tuto socket du net ne t'apprendron rien quand tu es debutant, ils sont trop dur quand tu viens de commencer, or comprendre ou non le fonctionnement d'un client ne t'apprendra pas a utiliser les imports qui sont aussi les meme en vb.net,
 
Haut Bas