Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - socket & tcp
Forum - C# / VB.NET - socket & tcp

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
rocruss (Normal User)
Newbie


Messaggi: 6
Iscritto: 26/03/2009

Segnala al moderatore
Postato alle 14:29
Giovedì, 26/03/2009
Devo inviare ad una stampa etichette attraverso una socket, un file contenente le informazioni di un etichetta. Purtroppo sono costretto ad usare vb.net 2002 e il framework 1.1. Finora per fare lo stesso lavoro ho usato un programma in vb6 utilizzando gli appositi OCX Winsock. Con vb.net 2002 come faccio ad ottenere la stessa prestazione? Ho trovato un mucchio di codice bellissimo e funzionante che apre chiude e invia tramite socket, ma quando cerco d'indirizzare la stampa etichette, nessuno di questi ha funzionato. Qualcuno ha idea di cosa occorre fare?
marco

Ultima modifica effettuata da rocruss il 26/03/2009 alle 14:30
PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 15:47
Venerdì, 27/03/2009
ma che codice hai usato che non funziona?

cmq secondo me dovresti:

1)aprire uno stream al file da trasferire
2)trasformare il file in un array di byte
3)tramite la classe TCPClient ottenere lo stream della connessione con getStream()
4)Salvare lo stream in una classe NetworkStream
5)Inviare con la write della NetworkStream l'array di byte equivalente al file

PM Quote
Avatar
rocruss (Normal User)
Newbie


Messaggi: 6
Iscritto: 26/03/2009

Segnala al moderatore
Postato alle 16:06
Venerdì, 27/03/2009
Ti ringrazio lunedi provo, ma una curiosità: quello che dici è grossomodo quello che ho fatto, solo che io ho usato il metodo send, cosa cambia rispetto al write?
grazie marco

PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 16:11
Venerdì, 27/03/2009
il metodo send di che classe? :-|

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 13:45
Domenica, 29/03/2009
Lorenzo si riferiva al wrapper di livello superiore TcpClient, mentre rocruss alla semplice classe Socket (che espone il metodo Send). Potresti mostrare il codice? Ora come ora non riesco ad immaginarmelo.

PM Quote
Avatar
rocruss (Normal User)
Newbie


Messaggi: 6
Iscritto: 26/03/2009

Segnala al moderatore
Postato alle 12:30
Lunedì, 30/03/2009
Di seguito il codice da cui sono partito, al posto di 'This is a test' ho mandato il file di datidell'eticchetta
grazie marco
/
Dim bytes(1024) As Byte

    ' Connect to a remote device.

    ' Establish the remote endpoint for the socket.
    ' This example uses port 11000 on the local computer.
    Dim ipHostInfo As IPHostEntry = Dns.Resolve(Dns.GetHostName())
    Dim ipAddress As IPAddress = ipHostInfo.AddressList(0)
    Dim remoteEP As New IPEndPoint(ipAddress, 11000)

    ' Create a TCP/IP socket.
    Dim sender As New Socket(AddressFamily.InterNetwork, _
        SocketType.Stream, ProtocolType.Tcp)

    ' Connect the socket to the remote endpoint.
    sender.Connect(remoteEP)

    Console.WriteLine("Socket connected to {0}", _
        sender.RemoteEndPoint.ToString())

    ' Encode the data string into a byte array.
    Dim msg As Byte() = _
        Encoding.ASCII.GetBytes("This is a test")

    ' Send the data through the socket.
    Dim bytesSent As Integer = sender.Send(msg)

    ' Receive the response from the remote device.
    Dim bytesRec As Integer = sender.Receive(bytes)
    Console.WriteLine("Echoed test = {0}", _
        Encoding.ASCII.GetString(bytes, 0, bytesRec))

    ' Release the socket.
    sender.Shutdown(SocketShutdown.Both)
    sender.Close()

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 15:33
Lunedì, 30/03/2009
L'esempio si connette allo stesso computer sulla porta 1100 (che non è una porta fisica), ma sei sicuro che questo ti permetta di accedere al dispositivo desiderato? Hai fatto dei controlli, e ti sei documentato sulle modalità del protocollo?
Se il lettore è collegato tramite una porta seriale c'è il controllo SerialPort che ti può facilitare il lavoro. Se usa una usb devi utilizzare le librerie fornite dal produttore.

PM Quote
Avatar
rocruss (Normal User)
Newbie


Messaggi: 6
Iscritto: 26/03/2009

Segnala al moderatore
Postato alle 10:05
Martedì, 31/03/2009
Questo è solo l'esempio da cui sono partito. Il dispositivo col quale mi devo collegare, possiede un indirizzo ip (fisso) e usa il port 8000 è una stampa etichette, di questo sono sicuro perchè con il componente socket di VB6 funziona perfettamente. La tecnica che intendo usare, credo sia corretta solo che non avendo molta esperienza con le socket, temo che sto facendo un errore del quale non mi rendo conto.
grazie marco

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 15:30
Martedì, 31/03/2009
Appurato questo, dovremmo sapere di che errore si tratta. O se non genera errori cosa succede di preciso. Dire che "non funziona" è molto vago...

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo