Conversione da _TCHAR* a ULONG tramite inet_addr

lunedì 22 giugno 2009 - 17.51

luigidibiasi Profilo | Guru

Salve,

ho una variabile puntatore _TCHAR * Address che mi viene passata dal parametro _TCHAR* argv[] tramite linea di comando quando lancio un programma. (Win32 Console)

Adesso devo utilizzare la funzione inet_addr per recuperare il formato network-order dell'indirizzo che è contenuto nella var Address.. Per la porta (anche essa contenuta in una _TCHAR* ho usato _wtol e tutto va correttamente....)

Per la Address = "127.0.0.1" ... se uso :

ULONG v = inet_addr("127.0.0.1")
l'indirizzo è corretto (scrivendo la stringa a mano)

se invece uso

ULONG v = inet_addr( (const char*)Address)

l'indirizzo non è corretto per gli ultimi 3 interi e quindi non mi effettua il bind sul socket..

Ora, sono certo di saltare qualche conversione (mi sembra di ricordare che devo togliere \0 alla fine della stringa, ma non ricordo che funzione usare, una della serie printf o scanf? )... c'è qualche anima pia che mi dà una mano

Ho risolto così : ( se esite una macro o una funzione che toglie \0 direttamente vi prego di dirmela!)

// Dichiaro un oggetto di dimensione sizeof(*Address) -1 in modo da togliermi \0 alla fine

const char* rAddr = (const char*) malloc(sizeof(const char*)*sizeof(*Address)-1);
_sAddr.sin_addr.s_addr = inet_addr(rAddr) // adesso funziona correttamente.


Grazie!
Luigi Di Biasi
http://blogs.dotnethell.it/luigidibiasi/
http://www.dibiasi.it/
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5