Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2011
    Messaggi
    6

    Codice Visual C++ to Java

    Ciao a tutti sono nuovo del forum... Avrei un problemino con un codice Visual C++ ... cioe devo trasformare questo codice in Java ma riscontro problemi...

    codice:
    int InviaInfo(Socket ^s, String ^str)
     {
     try 
    { str += L"\n\0";
     array<Byte> ^packet = Encoding::UTF8->GetBytes(str);
     if(s->Connected)
     s->Send(packet,str->Length,SocketFlags::None);
     } catch(SocketException ^e)
     { return e->ErrorCode; } return 0; }
    perfavore potete aiutarmi voi? Riuscireste a trasformarlo in Java???
    Grazie mille in anticipo...

    PS: Il metodo su cui incontro maggiori difficolta nel "Tradurre" è soket->Send()

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da lor77
    PS: Il metodo su cui incontro maggiori difficolta nel "Tradurre" è soket->Send()
    Fa vedere quello che hai scritto finora.

    Per darti uno spunto, puoi crearti un oggetto Socket da cui ottenere lo stream di uscita. Con questo puoi decorare un PrintWriter (ad esempio) che userai per spedire i tuoi dati.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2011
    Messaggi
    6
    si pero li ce il soketFlag o come si chiama e non so tradurlo... potete farmi un codice con quel metodo riscritto in java perfavore?

    Grazie mille ancora

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da lor77
    si pero li ce il soketFlag o come si chiama e non so tradurlo... potete farmi un codice con quel metodo riscritto in java perfavore?

    Grazie mille ancora
    No, il forum non è un servizio gratuito di traduzione e interpretariato. Per commissionare il proprio lavoro a terzi c'è il forum "Offro Lavoro / Collaborazione".

    Il tuo problema specifico è la Send() e su questo si continua la discussione.

    Come ti è già stato detto, dovrai creare un oggetto Socket. Da questo, hai il metodo getOutputStream() per ottenere un OutputStream (uno stream attraverso cui è possibile inviare qualcosa dall'altra parte).

    L'OutputStream mette a disposizione i metodi write() per effettuare le scritture (invii) e non necessita di quel flag.

    Aggiungo i link alla documentazione di ObjectOutputStream e della classe Socket, dove puoi trovare ulteriori informazioni.

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2011
    Messaggi
    6
    ciao scusami non lo sapevo... cmq uso i metodi che tu mi hai consigliato pero sembra ci sia qualcosa di strano che non mi fa inviare i dati... sarà forse la traduzione Incompleta in UTF8? bho... sinceramente ho provato a trasformare delle Stringhe in UTF8 con i metodi di Java ma mi dava con tutte le stringhe lo stesso risultato...

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Prova a postare il codice che hai scritto e ad indicare ciò che vorresti ottenere e ciò che invece ottieni (parlo della codifica UTF8).

    Inoltre, verifica di gestire correttamente le eccezioni. Spesso l'eccezione ti dice esattamente cosa stai sbagliando e dove.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2011
    Messaggi
    6
    codice:
    private static String toUTF8(String aa) 
    	{
    		byte[] latin1;
    		try {
    			latin1 = aa.getBytes("UTF-8");
    			byte[] utf8 = new String(latin1, "ISO-8859-1").getBytes("UTF-8");
    		}
    		catch (UnsupportedEncodingException e) {
    			
    			e.printStackTrace();
    		}
    		
    		
    		String b = utf8.toString();
    		
    		return b;
    	}

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Sinceramente, vedo poca utilità in ciò che hai fatto e non credo nemmeno che sia compilabile. Dovrebbe darti un "cannot find symbol" sull'istruzione

    codice:
    String b = utf8.toString();
    Comunque, stai passando un oggetto String per ottenere un altro oggetto String, tramite trasformazioni successive.

    Devi sapere che in Java, gli oggetti String rappresentano tutti delle stringhe codificate in UTF-16:

    Dalla documentazione della classe String
    A String represents a string in the UTF-16 format
    Quindi non ha molto senso ciò che stai cercando di fare.

    Se vuoi lavorare con diversi charset, dovrai usare degli array di byte.

    Se vuoi la rappresentazione UTF-8 di una stringa, questo è ciò che è necessario/sufficiente fare:

    codice:
    String miaStringa = ...;
    byte[] utf8 = miaStringa.getBytes("UTF-8");
    Se prendi quell'array di byte e ricostruisci un nuovo oggetto String in questo modo:

    codice:
    String nuova = new String(utf8, "UTF-8");
    Ottieni nuovamente la stessa identica stringa di partenza.

    Quello che stai facendo tu è ancora più articolato: ottieni un array di byte codificati in UTF-8 nell'array "latin1". Quindi costruisci un nuovo String con quell'array dicendo a Java che l'array è codificato in "ISO-8859-1" (ed è già un errore: i byte rappresentano una stringa in UTF-8, non in ISO-8859-1, quindi ne viene fuori un minestrone). Poi prendi questa nuova stringa e ne ottieni un nuovo array di byte codificati in UTF-8.

    Infine restituisci il toString() di questo array (che non è visibile in quel punto, essendo dichiarato dentro al try, ecco il perchè del cannot find symbol)... ora, il metodo toString() definito per gli array non ha alcun senso: esso restituisce una rappresentazione standard dell'indirizzo di memoria in cui è allocato l'array...

    Credo che tu debba chiarire bene ciò che vuoi fare.

    PS: se non ottieni l'errore "cannot find symbol" significa che hai un altro array, globale dichiarato a livello di classe, con lo stesso nome e Java sta referenziando per forza quello... che sarà nullo o comunque inalterato rispetto all'inizio dell'esecuzione del metodo.

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2011
    Messaggi
    6
    grazie mille ora provo e ti faccio sapere

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2011
    Messaggi
    6
    GRAZIE MILLE ... ora "traduce" bene... ora potresti darmi una mano con il metodo send?

    io uso:
    getOutputStream()
    PrintWriter();

    poi invio la stringa con PrintWriter.println(Stringa)

    faccio bene? ci sono metodi alternativi?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.