Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Due mesi di Battlefield 6: dalla campagna al battle royale, è l'FPS che stavamo aspettando
Due mesi di Battlefield 6: dalla campagna al battle royale, è l'FPS che stavamo aspettando
Abbiamo giocato a lungo a Battlefield 6, abbiamo provato tutte le modalità multiplayer, Redsec, e le numerose personalizzazioni. In sintesi, ci siamo concentrati su ogni aspetto del titolo per comprendere al meglio uno degli FPS più ambiziosi della storia dei videogiochi e, dopo quasi due mesi, abbiamo tirato le somme. In questo articolo, condividiamo con voi tutto ciò che è Battlefield 6, un gioco che, a nostro avviso, rappresenta esattamente ciò che questo genere attendeva da tempo
Antigravity A1: drone futuristico per riprese a 360° in 8K con qualche lacuna da colmare
Antigravity A1: drone futuristico per riprese a 360° in 8K con qualche lacuna da colmare
Abbiamo messo alla prova il drone Antigravity A1 capace di riprese in 8K a 360° che permette un reframe in post-produzione ad eliche ferme. Il concetto è molto valido, permette al pilota di concentrarsi sul volo e le manovre in tutta sicurezza e decidere con tutta tranquillità come gestire le riprese. La qualità dei video, tuttavia, ha bisogno di uno step in più per essere competitiva
Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator
Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator
Dopo oltre 4 anni si rinnova la serie Sony Alpha 7 con la quinta generazione, che porta in dote veramente tante novità a partire dai 30fps e dal nuovo sensore partially stacked da 33Mpixel. L'abbiamo provata per un breve periodo, ecco come è andata dopo averla messa alle strette.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 30-12-2008, 09:40   #1
mercury841
Senior Member
 
Iscritto dal: Nov 2004
Messaggi: 409
[JAVA]: problemi lettura dati binari

Ciao a tutti, vi spiego qual'è il mio problema.
Devo leggere dei dati binari provenienti da un terminale e salvarli su un file binario.
Il problema è che quando apro il file mi trovo alcuni dati errati, per esempio:

questo è il file di uscita:
1E 20 20 07 30 38 31 32 32 33

questo è il file corretto che dovrei ottenere:
1E 00 00 07 30 38 31 32 32 33

Il metodo che fa questa operazione è fatto in questo modo:

Codice:


		byte[] buff = new byte[1024];
		int ret_read = 0;
		try {
			InputStream inputStream = telnetClient.getInputStream();
			FileOutputStream file = new FileOutputStream("file.dat");;
		
			ret_read = inputStream.read(buff);
			while (ret_read >= 0){
				file.write(buff, 0, ret_read);
				ret_read = inputStream.read(buff);
			}
			
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

Secondo voi come posso risolvere?
ciao e grazie per l'aiuto che saprete darmi.
__________________
HU Queen Member
mercury841 è offline   Rispondi citando il messaggio o parte di esso
Old 30-12-2008, 11:18   #2
Ken1986
Member
 
Iscritto dal: Nov 2007
Messaggi: 122
Anch'io ho avuto un tuo stesso problema, ma non sono riuscito a risolvere, ed ho dovuto cambiare linguaggio di programmazione per ovviare
Ken1986 è offline   Rispondi citando il messaggio o parte di esso
Old 30-12-2008, 13:15   #3
stdecden
Member
 
L'Avatar di stdecden
 
Iscritto dal: Apr 2007
Messaggi: 263
Puó darsi che per qualche ragione i 0x00 vengono trasformati in spazi del codice ASCII (0x20)
stdecden è offline   Rispondi citando il messaggio o parte di esso
Old 30-12-2008, 14:03   #4
mercury841
Senior Member
 
Iscritto dal: Nov 2004
Messaggi: 409
Quote:
Originariamente inviato da stdecden Guarda i messaggi
Puó darsi che per qualche ragione i 0x00 vengono trasformati in spazi del codice ASCII (0x20)
si è proprio questo, come potrei risolvere?
posso evitare che i byte vengano trasformati in codice ASCII ?
__________________
HU Queen Member

Ultima modifica di mercury841 : 30-12-2008 alle 14:06.
mercury841 è offline   Rispondi citando il messaggio o parte di esso
Old 31-12-2008, 08:35   #5
mercury841
Senior Member
 
Iscritto dal: Nov 2004
Messaggi: 409
nessun altro si è trovato ad affrontare lo stesso problema?
__________________
HU Queen Member

Ultima modifica di mercury841 : 31-12-2008 alle 09:08.
mercury841 è offline   Rispondi citando il messaggio o parte di esso
Old 31-12-2008, 15:45   #6
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Non è che è una limitazione della sorgente da cui vai a prendere il file ? Vedo un telnet client.
Prova ad usare come input un altro file e vedi se funziona.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 02-01-2009, 08:27   #7
mercury841
Senior Member
 
Iscritto dal: Nov 2004
Messaggi: 409
Quote:
Originariamente inviato da cionci Guarda i messaggi
Non è che è una limitazione della sorgente da cui vai a prendere il file ? Vedo un telnet client.
Prova ad usare come input un altro file e vedi se funziona.
probabilmente è proprio questo il problema, quando vado a leggere da telnet i dati binari, non so perchè, alcuni dati vengono trasformati in altri. Infatti ho provato a ricopiare un file binario in un altro utillizzando la stessa procedura di sopra e il tutto funziona perfettamente. Non so che fare...
__________________
HU Queen Member
mercury841 è offline   Rispondi citando il messaggio o parte di esso
Old 02-01-2009, 09:05   #8
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Probabilmente vengono cambiati i dati sotto 0x20 (sotto lo spazio), perché spesso rappresentano sequenze di escape per i terminali. In pratica si fa per evitare che succeda la stessa cosa che avviene sui terminali *nix quando si fa un cat di un file binario (vengono cambiati tutti i caratteri con simboli strani).

Purtroppo non so se ci sia qualcosa da fare...magari potendo manipolare le impostazioni del server, ma non ne ho idea.

Ultima modifica di cionci : 02-01-2009 alle 13:44.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 02-01-2009, 14:31   #9
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
http://tools.ietf.org/html/rfc856
Quote:
we have the rule that when a connection is not presently
operating in binary mode, the default (i.e., the interpretation of
WON'T and DON'T) is to continue operating in the current mode,
whether that is NVT ASCII, EBCDIC, or some other mode. This rule,
however, is not applied once a connection is operating in a binary
mode (as agreed to by both ends); this would require each end of the
connection to maintain a stack, containing all of the encoding-method
transitions which had previously occurred on the connection, in order
to properly interpret a WON'T or DON'T. Thus, a WON'T or DON'T
received after the connection is operating in binary mode causes the
encoding method to revert to NVT ASCII.
sembrerebbe che la connessione venga iniziata direttamente in binary mode dal server e che il tuo client non supporti la trasmissione binaria...
prova ad utilizzare qualche altra libreria per telnet e vedi se così risolvi...
oppure prova se puoi forzare il tuo telnet client attuale ad utilizzare la connessione in modalità binary.
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 04-01-2009, 18:03   #10
mercury841
Senior Member
 
Iscritto dal: Nov 2004
Messaggi: 409
se provo a scaricare questi dati con il protocollo Kermit?
qualcuno sa spiegrami di cosa si tratta? in poche parole quando recupero questi dati binari posso scegliere la modalità tra "direct" e "kermit". Fino ad ora ho sempre utilizzato la prima modalità. Ho l'impressione che utilizzando, invece, il protocollo Kermit riuscirei a risolvere.
__________________
HU Queen Member
mercury841 è offline   Rispondi citando il messaggio o parte di esso
Old 04-01-2009, 18:33   #11
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
Quote:
Originariamente inviato da mercury841 Guarda i messaggi
se provo a scaricare questi dati con il protocollo Kermit?
qualcuno sa spiegrami di cosa si tratta? in poche parole quando recupero questi dati binari posso scegliere la modalità tra "direct" e "kermit". Fino ad ora ho sempre utilizzato la prima modalità. Ho l'impressione che utilizzando, invece, il protocollo Kermit riuscirei a risolvere.
il kermit dovrebbe supportare sia il trasferimento testuale che quello binario..
prova
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 04-01-2009, 18:53   #12
mercury841
Senior Member
 
Iscritto dal: Nov 2004
Messaggi: 409
purtroppo non so come si usa.
__________________
HU Queen Member
mercury841 è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2009, 15:41   #13
mercury841
Senior Member
 
Iscritto dal: Nov 2004
Messaggi: 409
Effettivamente con il Kermit funziona, l'ho provato con l'HyperTerminal di win. Purtroppo però questa cosa la devo implementare in Java. come faccio ad utilizzare il kermit anche in Java?
__________________
HU Queen Member
mercury841 è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2009, 16:03   #14
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
In bocca al lupo:
http://www.faqs.org/rfcs/rfc2840.html
Il problema è trovare l'implementazione del protocollo kermit in Java.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2009, 17:03   #15
mercury841
Senior Member
 
Iscritto dal: Nov 2004
Messaggi: 409
Potrei utilizzare un programma per effettuare il trasferimento con kermit standalone, e richiamarlo tramite java. Ne conoscete qualcuno?
__________________
HU Queen Member
mercury841 è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2009, 17:24   #16
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Se ti va bene un prodotto commerciale c'è questa libreria [JKermit].
Qui info generiche da wikipedia ENG.
Prova a dare un occhio a C-Kermit o Kermit 95.
Piuttosto che implementare il protocollo in Java potrebbe essere più abbordabile wrappare qualcosa di esistente e interfacciarsi mediante JNI.

@EDIT:
purtroppo la libreria standard della Sun lascia un po' a desiderare per quanto riguarda il supporto per il serialIO.
Inoltre, da quello che ho letto in giro, la tendenza per sviluppi futuri è orientata verso l'estensione del supporto a basso livello, non ad astrazioni maggiori, come appunto il protocollo Kermit.
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)

Ultima modifica di banryu79 : 08-01-2009 alle 17:29.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 09-01-2009, 15:31   #17
mercury841
Senior Member
 
Iscritto dal: Nov 2004
Messaggi: 409
Ho trovato un programmino che mi permette di effettuare il download del file tramite protocollo Kermit. Però adesso non so come utilizzarlo tramite Java. In pratica riesco a lanciarlo, però mi blocco perchè non so come inviare dei comandi a questo proagramma. Ho provato anche a lanciarlo passandogli la socket su cui ho stabilito, precedentemente, la connessione telnet in questo modo: link. Però non mi funziona. Qualcuno ha qualche idea?
__________________
HU Queen Member
mercury841 è offline   Rispondi citando il messaggio o parte di esso
Old 09-01-2009, 16:26   #18
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da mercury841 Guarda i messaggi
Ho trovato un programmino che mi permette di effettuare il download del file tramite protocollo Kermit. Però adesso non so come utilizzarlo tramite Java. In pratica riesco a lanciarlo, però mi blocco perchè non so come inviare dei comandi a questo proagramma.
Beh, se lanci il programma da Java come processo esterno al massimo puoi passargli dei parametri da linea di comando; poi una volta partito il processo fa quello che deve.
Non è così?
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 09-01-2009, 16:43   #19
mercury841
Senior Member
 
Iscritto dal: Nov 2004
Messaggi: 409
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Beh, se lanci il programma da Java come processo esterno al massimo puoi passargli dei parametri da linea di comando; poi una volta partito il processo fa quello che deve.
Non è così?
Il programma lo utilizzo in questo modo:
  1. lancio l'exe del programma
  2. a questo punto parte un prompt dei comandi tramite il quale stabilisco una connessione telnet inviano il comando "telnet ip"
  3. tramite una interfaccia testuale inserisco alcune informazioni
  4. scarico il file in modalità Kermit

Come faccio a tradurre tutti questi passi in una porcedura java????
Cioè io riesco a lanciare l'exe da Java, ma poi come faccio ad inviare i successvi comandi al programma?
Più che un programma mi servirebbe una subroutine che mi permetta di eseguire il kermit su una conessione Telnet.
__________________
HU Queen Member
mercury841 è offline   Rispondi citando il messaggio o parte di esso
Old 09-01-2009, 17:17   #20
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Beh, da Java forse potresti lanciare cmd.exe come processo esterno; ti agganci all'inputstream e all'outputstream del tuo processo, e a quel punto passa in input all'outputstream del processo i comandi da eseguire.

Per saperne un po' di più prova a leggerti questi due vecchi topic (oppure fai una ricerca interna nel Forum con le keyword "Java" e "Process").
> [Java] Runtime
> [JAVA] inputstream e outputstream di un processo

@EIDT:
Come ultima spiaggia potrebbe essere sufficente creare al volo un .bat e lanciare quello, anche se come soluzione (ammesso funzioni) è un po' sporca.
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)

Ultima modifica di banryu79 : 09-01-2009 alle 17:19.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Due mesi di Battlefield 6: dalla campagna al battle royale, è l'FPS che stavamo aspettando Due mesi di Battlefield 6: dalla campagna al bat...
Antigravity A1: drone futuristico per riprese a 360° in 8K con qualche lacuna da colmare Antigravity A1: drone futuristico per riprese a ...
Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator Sony Alpha 7 V, anteprima e novità della ...
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1 realme GT 8 Pro Dream Edition: prestazioni da fl...
OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum OVHcloud Summit 2025: le novità del cloud...
La costruzione del telescopio spaziale N...
HBO ha cancellato la produzione della se...
OpenAI ha pensato a una partnership (o a...
Starlink Mobile: SpaceX potrebbe lanciar...
Volkswagen trasforma lo stabilimento di ...
Meta AI più reattivo e imparziale...
In Cina la prima GPU discreta al mondo c...
Vertiv CoolCenter, il sistema di raffred...
Konecta entra nel Kraken BPO Partner Pro...
Un dialogo con l'AI sposta voti meglio d...
iPhone 17 al minimo storico: oggi il 256...
Gli utenti italiani scelgono ChatGPT: &e...
Anche Xiaomi avrà il suo trifold:...
È Natale in casa Tesla: arriva la...
Shai-Hulud diventa più cattivo: e...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 05:10.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v