Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - riscrivere da VB.net a C#
Forum - C# / VB.NET - riscrivere da VB.net a C#

Avatar
fosforo (Normal User)
Expert


Messaggi: 391
Iscritto: 06/04/2009

Segnala al moderatore
Postato alle 12:51
Lunedì, 30/05/2016
Ciao

avevo scritto un programmino in VB per andare a interrogare un device via TCP:

Imports System.Net.Sockets.TcpClient
Dim client As New System.Net.Sockets.TcpClient
            client.Connect(Mytxthost.Text, Mytxtport.Text)
            NetStream = client.GetStream()
SendString(NetStream, "info paths" + vbCrLf)
            Threading.Thread.Sleep(1500)

            Dim data(10024) As Byte

            NetStream.Read(data, 0, 10024)
            Dim returndata As String = ""
            returndata = System.Text.Encoding.UTF8.GetString(data)
            Dim a As Array = Split(returndata, "<media-path>")

Ora, che sto cercando di rifarlo in C# non capisco come aprire il Socket e dare comandi e ricevere le risposte.

Grazie


PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6403
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 13:02
Lunedì, 30/05/2016
E lo vuoi scritto dal forum?

A parte il fatto che esistono siti che lo fanno per te, proponi almeno un tuo tentativo!


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
fosforo (Normal User)
Expert


Messaggi: 391
Iscritto: 06/04/2009

Segnala al moderatore
Postato alle 13:16
Lunedì, 30/05/2016
Magari....

Piano piano sto capendo come fare.
Ho importato la sua libreria, con Using:
L'ho inizializzata: IC_Connection MyConn;
e riesco a mandare dei comandi.

Quello che non riesco a capire è come ricevere le stringhe di ritorno.
Cioè:
Se mando il comando info MyConn.sendAsyncCommand("INFO") dovrei ricevere di ritorno le info del device.
Ma ad esempio come faccio a metterle in una stringa e metterle in un MessageBox?

tutto qui.

Ultima modifica effettuata da fosforo il 30/05/2016 alle 13:34
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6403
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 14:55
Lunedì, 30/05/2016
Ma che c'entra il codice che hai mostrato?

Di quale device parli?

Di quale protocollo applicativo?

Fare domande in questo modo non porta da nessuna parte ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2305
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 15:47
Lunedì, 30/05/2016
Testo quotato

Postato originariamente da fosforo:

Magari....

Piano piano sto capendo come fare.
Ho importato la sua libreria, con Using:
L'ho inizializzata: IC_Connection MyConn;
e riesco a mandare dei comandi.

Quello che non riesco a capire è come ricevere le stringhe di ritorno.
Cioè:
Se mando il comando info MyConn.sendAsyncCommand("INFO") dovrei ricevere di ritorno le info del device.
Ma ad esempio come faccio a metterle in una stringa e metterle in un MessageBox?

tutto qui.




Sono convinto che se leggi bene il codice riesci a capirlo.
la fretta non porta da nessuna parte


Codice sorgente - presumibilmente VB.NET

  1. Dim data(10024) As Byte
  2.  
  3.             NetStream.Read(data, 0, 10024)
  4.             Dim returndata As String = ""
  5.             returndata = System.Text.Encoding.UTF8.GetString(data)
  6.             Dim a As Array = Split(returndata, "<media-path>")




Codice sorgente - presumibilmente C# / VB.NET

  1. byte[] data = new byte[10024];
  2.  
  3. NetStream.Read(data,0,data.lenght);
  4. string returndata = System.Text.Encoding.UTF8.GetString(data);
  5.  
  6. string[] array = returndata.Split("<media-path>");



i valori di ritorno sono ora nell'array di stringa.
normalmente dovrebbe essere array[0]


Edit:
Cmq ti consiglio di lasciare da parte il vb e concentrarti maggiormente su C#.
La sintassi ed il modo di scrivere sono completamente differenti.

Invece di trovare un metodo per convertire una funzione da vb.net a C#
cerca di trovare direttamente un metodo funzionante in C# evitando così i problemi.

Ultima modifica effettuata da Thejuster il 30/05/2016 alle 15:52


https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Avatar
fosforo (Normal User)
Expert


Messaggi: 391
Iscritto: 06/04/2009

Segnala al moderatore
Postato alle 9:42
Martedì, 31/05/2016
Grazie x l'aiuto.

Sto cercando in effetti di lasciare il VB.
Ho capito che C# è molto più profondo e professionale.
Mi scuso se la domanda non era formulata correttamente ma ogni tanto mi ci perdo e faccio confusione.


Grazie

PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2305
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 9:53
Martedì, 31/05/2016
Si il C# è decisamente più professionale e potente.
Ma sopratutto è C-Like.

Ciò significa che una volta appreso le basi del C#,
sarai automaticamente in grado di programmare tutti gli altri linguaggi c-like. (ovviamente solo le basi)
come c++,c,java,php,javascript ecc. ecc.


Anche io tempo fà trovai enormi difficoltà nel passaggio da vb a c#.
Ma ora ho praticamente dimenticato il vb. E non mi pento della scelta fatta :k:


https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote