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
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

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
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

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
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
corretto
 

Star-Dust

Expert
Licensed User
Longtime User
Cookies are required to use this site. You must accept them to continue using the site. Learn more…