a clone of inetd yazıyor ve bu bağlantıya bağlanan istemcinin IP'sini ve bağlantı noktasını yazdıran bir sunucuyu çalıştırmam gerekiyor. Bunu yapmak içinSoket Tanımlayıcısından IP/Bağlantı Noktası Kurtarılıyor
Ben soket tanımlayıcısı ile STDIN
ve STDOUT
üzerine itibariyle my initial solution gereken bilgileri içeren sockaddr_in
yapısını, bulmaktı. Bununla birlikte, getsockname()
ile yapılıyorsa, tüm bitler 0 olarak ayarlanmış boş bir yapıya dönüyor.
Yaklaşımımın nesi yanlış? IP/Port'u kurtarmak için kullanabileceğim başka yaklaşımlar var mı?
Teşekkür
OP, "overwriting" stdin'i ve stdout'u, en iyi ihtimalle yanlış bir şekilde bildirilen soket için dosya tanımlayıcısından bahsetmişti, ancak değiştirmenin yanlış yapıldığını ve stdin'in (fd 0) aslında bir soket olmadığını gösteriyor olabilir ... –
@R .., Kodu https://github.com/konr/Licio/blob/master/05/time adresinden kontrol edin.d –
Dunno bu * sorun * ise, 'void *' için gerçekten çirkin bir ikame dışında 'struct sockaddr 'kullanmak her zaman bir hatadır. Asla "struct sockaddr" türünde gerçek nesneler olmamalıdır. Her zaman gerektiği gibi struct sockaddr_in, struct sockaddr_in6 veya struct sockadd_storage işlevlerini kullanın. –