Oppure

Loading
26/03/09 13:29
rocruss
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 26/03/09 13:30
aaa
27/03/09 14:47
lorenzo
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
aaa
27/03/09 15:06
rocruss
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
aaa
27/03/09 15:11
lorenzo
il metodo send di che classe? :-|
aaa
29/03/09 11:45
Il Totem
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.
aaa
30/03/09 10:30
rocruss
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()
aaa
30/03/09 13:33
Il Totem
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.
aaa
31/03/09 8:05
rocruss
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
aaa