View Full Version : Berkeley Sockets e Unicode
sto facendo un programma che usa i sockets (il sorgente deve essere portabile: è per un esame e deve funzionare sia su Windows che su Linux), e lo sto rendendo "Unicode compliant". ho incluso tchar.h e così sto usando tutte le funzioni _t della libreria standard del C, ma per i sockets come funziona? per esempio, mi arriva un nome DNS contenente caratteri giapponesi e devo risolverlo ad un indirizzo IP; esiste la versione Unicode della gethostbyname? oppure non è proprio possibile che esistano nomi DNS con caratteri Unicode?
atroce sospetto... O__O
ma su Linux esiste tchar.h? :mc:
perché il programma l'ho appena iniziato e non l'ho ancora provato su Linux...
ora ci provo...
ma su Linux esiste tchar.h?No, non c'è.
Prova a leggere qui (http://www-128.ibm.com/developerworks/linux/library/l-linuni.html) e qui (http://www.linux.com/howtos/Unicode-HOWTO-1.shtml)
ilsensine
02-05-2007, 09:02
ma per i sockets come funziona? per esempio, mi arriva un nome DNS contenente caratteri giapponesi e devo risolverlo ad un indirizzo IP; esiste la versione Unicode della gethostbyname? oppure non è proprio possibile che esistano nomi DNS con caratteri Unicode?
Ah bella domanda, se lo scopri dimmelo. Le funzioni socket ignorano il contenuto degli argomenti, quindi non ha senso chiamarle "versioni ascii" o "unicode".
Per i nomi degli host, c'è qualche conversione che va fatta. Ad esempio ho sniffato la richiesta dns di un browser per l'host "www.müller.de", osservando che viene trasformata nella richiesta per "www.xn--mller-kva.de". Similmente "www.öko.de" diventa "www.xn--ko-eka.de". Vai a capire ora che rfc tratta dell'argomento :stordita:
Ad esempio ho sniffato la richiesta dns di un browser per l'host "www.müller.de", osservando che viene trasformata nella richiesta per "www.xn--mller-kva.de". Similmente "www.öko.de" diventa "www.xn--ko-eka.de". Vai a capire ora che rfc tratta dell'argomento :stordita:È il Punycode (http://en.wikipedia.org/wiki/Punycode)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.