Italian [Risolto] Conversione funzione vb.net invio dati tcp/ip socket

Xfood

Expert
Licensed User
Buongiorno a tutti,
volevo convertire questa funzione vb.net in b4j ,
in sostanza invia dei comandi su socket tcp/ip
qualcuno di buona anima potrebbe aiutarmi,
Grazie

vb.net
B4X:
'Public Shared Function Init(ByVal ip As String, ByVal porta As String) As Object
            Dim obj As Object
            Dim ip As String = "192.168.1.101"
            Dim porta as string ="8029"
            Try
                Dim str As String = "#I#"
                Dim str1 As String = Nothing
                Dim tcpClient As System.Net.Sockets.TcpClient = New System.Net.Sockets.TcpClient(ip, Conversions.ToInteger(porta))
                LogWrite.WriteLogConnector(GlobalApp.PathLog, String.Concat("Inviato Comando: ", str))
                Dim bytes As Byte() = Encoding.ASCII.GetBytes(str)
                Dim stream As NetworkStream = tcpClient.GetStream()
                stream.Write(bytes, 0, CInt(bytes.Length))
                LogWrite.WriteLogConnector(GlobalApp.PathLog, String.Concat("Inviato: ", str))
                ReDim bytes(1024)
                Dim num As Integer = stream.Read(bytes, 0, CInt(bytes.Length))
                str1 = Encoding.ASCII.GetString(bytes, 0, num)
                LogWrite.WriteLogConnector(GlobalApp.PathLog, String.Concat("Ricevuto: ", str1))
                stream.Close()
                tcpClient.Close()
                obj = 1
            Catch exception1 As System.Exception
                ProjectData.SetProjectError(exception1)
                Dim exception As System.Exception = exception1
                LogWrite.WriteLog(GlobalApp.PathLog, exception.Message)
                LogWrite.WriteLogConnector(GlobalApp.PathLog, exception.Message)
                obj = 0
                ProjectData.ClearProjectError()
            End Try
            Return obj
 '       End Function
 

Star-Dust

Expert
Licensed User
Longtime User
Buongiorno a tutti,
volevo convertire questa funzione vb.net in b4j ,
in sostanza invia dei comandi su socket tcp/ip
qualcuno di buona anima potrebbe aiutarmi,
Grazie

vb.net
B4X:
'Public Shared Function Init(ByVal ip As String, ByVal porta As String) As Object
            Dim obj As Object
            Dim ip As String = "192.168.1.101"
            Dim porta as string ="8029"
            Try
                Dim str As String = "#I#"
                Dim str1 As String = Nothing
                Dim tcpClient As System.Net.Sockets.TcpClient = New System.Net.Sockets.TcpClient(ip, Conversions.ToInteger(porta))
                LogWrite.WriteLogConnector(GlobalApp.PathLog, String.Concat("Inviato Comando: ", str))
                Dim bytes As Byte() = Encoding.ASCII.GetBytes(str)
                Dim stream As NetworkStream = tcpClient.GetStream()
                stream.Write(bytes, 0, CInt(bytes.Length))
                LogWrite.WriteLogConnector(GlobalApp.PathLog, String.Concat("Inviato: ", str))
                ReDim bytes(1024)
                Dim num As Integer = stream.Read(bytes, 0, CInt(bytes.Length))
                str1 = Encoding.ASCII.GetString(bytes, 0, num)
                LogWrite.WriteLogConnector(GlobalApp.PathLog, String.Concat("Ricevuto: ", str1))
                stream.Close()
                tcpClient.Close()
                obj = 1
            Catch exception1 As System.Exception
                ProjectData.SetProjectError(exception1)
                Dim exception As System.Exception = exception1
                LogWrite.WriteLog(GlobalApp.PathLog, exception.Message)
                LogWrite.WriteLogConnector(GlobalApp.PathLog, exception.Message)
                obj = 0
                ProjectData.ClearProjectError()
            End Try
            Return obj
 '       End Function
Facile, un giorno te lo tradurrò
 

Star-Dust

Expert
Licensed User
Longtime User
Sì, @Star-Dust (che, noto adesso, ha cambiato di nuovo avatar; quindi, come promesso/minacciato, userò io il preDecente... in qualche modo 😄)

P.S. Quello attuale fa come minimo schifo!
Rischi che i miei creditori ti scambino per me e ti chiedono soldi nella migliore delle ipotesi
 
Last edited:

Star-Dust

Expert
Licensed User
Longtime User
Grazie,
Prenditi tutto il tempo necessario,
Tanto mi serve per domani.😉
Diceva qualcuno che se codifichi un algoritmo a qualcuno lo sfami per un giorno se gli insegni a sviluppare lontano per tutta ma vita

Comunque il codice fa solo unancosa, manda la stringa #I# e aspetta la risposta che invia nel log
 

Xfood

Expert
Licensed User
Diceva qualcuno che se codifichi un algoritmo a qualcuno lo sfami per un giorno se gli insegni a sviluppare lontano per tutta ma vita

Comunque il codice fa solo unancosa, manda la stringa #I# e aspetta la risposta che invia nel log
Sicuramente il tuo ragionamento non fa una piega, purtroppo non ho capito ancora bene come gestire il socket, e l'invio di stringe su un server in ascolto, ecco perche ho postato una semplice funzione, cosi facendo tesoro del codice tradotto da qualche anima gentile, avrei studiato e compreso la gestione del socket, e poi da questa base tradurre tutte le altre mie funzioni piu complesse.
🙏🙏🙏
 

amorosik

Expert
Licensed User
Sicuramente il tuo ragionamento non fa una piega, purtroppo non ho capito ancora bene come gestire il socket, e l'invio di stringe su un server in ascolto, ecco perche ho postato una semplice funzione, cosi facendo tesoro del codice tradotto da qualche anima gentile, avrei studiato e compreso la gestione del socket, e poi da questa base tradurre tutte le altre mie funzioni piu complesse.
🙏🙏🙏

Ti consiglio, invece di tradurre del codice di altra parrocchia, di verificare se esistono porzioni di codice/esempi gia' realizzati in B4A che usino un socket tcp per l'invio dati
Credo la strada sarebbe molto piu' discensoria
Quel che farei io:
- piccolo server in b4j che riceve dati via socket tcp, sempre in ascolto
- test del server usando browser web,
- programma b4a per l'invio stringhe sul server appena costruito
 

Star-Dust

Expert
Licensed User
Longtime User
Ti consiglio, invece di tradurre del codice di altra parrocchia, di verificare se esistono porzioni di codice/esempi gia' realizzati in B4A che usino un socket tcp per l'invio dati
Credo la strada sarebbe molto piu' discensoria
Quel che farei io:
- piccolo server in b4j che riceve dati via socket tcp, sempre in ascolto
- test del server usando browser web,
- programma b4a per l'invio stringhe sul server appena costruito
troppo complicato, sono 5 righe di codice. Ma adesso fatemi lavorare che altrimenti non mi danno lo stipendio
 

Star-Dust

Expert
Licensed User
Longtime User
Buongiorno a tutti,
volevo convertire questa funzione vb.net in b4j ,
in sostanza invia dei comandi su socket tcp/ip
qualcuno di buona anima potrebbe aiutarmi,
Grazie

vb.net
B4X:
'Public Shared Function Init(ByVal ip As String, ByVal porta As String) As Object
            Dim obj As Object
            Dim ip As String = "192.168.1.101"
            Dim porta as string ="8029"
            Try
                Dim str As String = "#I#"
                Dim str1 As String = Nothing
                Dim tcpClient As System.Net.Sockets.TcpClient = New System.Net.Sockets.TcpClient(ip, Conversions.ToInteger(porta))
                LogWrite.WriteLogConnector(GlobalApp.PathLog, String.Concat("Inviato Comando: ", str))
                Dim bytes As Byte() = Encoding.ASCII.GetBytes(str)
                Dim stream As NetworkStream = tcpClient.GetStream()
                stream.Write(bytes, 0, CInt(bytes.Length))
                LogWrite.WriteLogConnector(GlobalApp.PathLog, String.Concat("Inviato: ", str))
                ReDim bytes(1024)
                Dim num As Integer = stream.Read(bytes, 0, CInt(bytes.Length))
                str1 = Encoding.ASCII.GetString(bytes, 0, num)
                LogWrite.WriteLogConnector(GlobalApp.PathLog, String.Concat("Ricevuto: ", str1))
                stream.Close()
                tcpClient.Close()
                obj = 1
            Catch exception1 As System.Exception
                ProjectData.SetProjectError(exception1)
                Dim exception As System.Exception = exception1
                LogWrite.WriteLog(GlobalApp.PathLog, exception.Message)
                LogWrite.WriteLogConnector(GlobalApp.PathLog, exception.Message)
                obj = 0
                ProjectData.ClearProjectError()
            End Try
            Return obj
 '       End Function

All'incirca è così
B4X:
Private Sub Invia
    Private Sock As Socket
    Private AStreams As AsyncStreams
 
    Dim ip As String = "192.168.1.101"
    Dim porta As String ="8029"
 
    Sock.Initialize("Sock")
    Sock.Connect(ip,porta,5000)
 
    Wait For Sock_Connected (Successful As Boolean)
    If Successful Then
        AStreams.Initialize(Con.InputStream ,Con.OutputStream,"AStreams")
        Log("Connect: " & Sock.RemoteAddress)
        AStreams.Write("#I#".GetBytes("UTF8"))
        Wait Fo AStreams_NewData (Buffer() As Byte)
        Log("Ricevuto: " & BytesToString(Buffer,0,Buffer.Length,"UTF8"))
        AStreams.Close
    Else
        Log("Error connect: " & Sock.RemoteAddress)
    End If
 
    Sock.Close
End Sub
 
Last edited:

Xfood

Expert
Licensed User
All'incirca è così
B4X:
Private Sub Invia
    Private Sock As Socket
    Private AStreams As AsyncStreams
 
    Dim ip As String = "192.168.1.101"
    Dim porta As String ="8029"
 
    Sock.Initialize("Sock")
    Sock.Connect(ip,porta,5000)
 
    Wait For Sock_Connected (Successful As Boolean)
    If Successful Then
        AStreams.Initialize(Con.InputStream ,Con.OutputStream,"AStreams")
        Log("Connect: " & Con.RemoteAddress)
        AStreams.Write("#I#".GetBytes("UTF8"))
        Wait Fo AStreams_NewData (Buffer() As Byte)
        Log("Ricevuto: " & BytesToString(Buffer,0,Buffer.Length,"UTF8"))
        AStreams.Close
    Else
        Log("Error connect: " & Con.RemoteAddress)
    End If
 
    Sock.Close
End Sub
Grazieeeeeeee
e quello che mi serve,
scusami se ti distrubo mi da questo errore:
B4X:
AStreams.Initialize(Con.InputStream ,Con.OutputStream,"AStreams")
        Log("Connect: " & Con.RemoteAddress)
        ' variabile con non dichiarata'
 

Star-Dust

Expert
Licensed User
Longtime User
Grazieeeeeeee
e quello che mi serve,
scusami se ti distrubo mi da questo errore:
B4X:
AStreams.Initialize(Con.InputStream ,Con.OutputStream,"AStreams")
        Log("Connect: " & Con.RemoteAddress)
        ' variabile con non dichiarata'
corretto
 

Star-Dust

Expert
Licensed User
Longtime User
Top