Erwtisi gia socket programming

Vasilis Vasaitis vvas at hal.csd.auth.gr
Thu Apr 12 01:09:01 EEST 2001


On Wed, Apr 11, 2001 at 04:28:05PM +0100, Panagiotis Voudouris wrote:
> Michalis Kabrianis wrote:
> > 
> > Αν ανοίξω ένα socket σε ένα μηχάνημα με 2 IPs (στο ίδιο δίκτυο) και μετά
> > κάνω connect υπάρχει τρόπος να ξέρω από ποια IP θα κάνει το connect?
> > Αν την κάνω (πριν το connect) bind με IN_ADDRANY υπάρχει τρόπος να ξέρω
> > ποια IP θα κάνει το connect?
> 
> Afou anoi3eis to socket, me th getsockname mporeis na pareis o,ti
> sxetiko uparxei gia authn. H getsockname pairnei ws arguement ena
> sockaddr_in structure pou exei to ip. H inet_ntoa 8a sou metatreyei to
> ip apo network byte order se string. Des man pages gia ip(7),
> getsockname(2), inet_ntoa(3).

  Εδώ να συμπληρώσω, αν κατάλαβα καλά την ερώτηση του Μιχάλη, ότι σε
οποιαδήποτε διεύθυνση μπορεί να γίνει το connect() (δηλαδή δεν μπορείς να το
ξέρεις από πριν), οπότε μόνο αφού γίνει η σύνδεση κάνεις τα παραπάνω.

> Na rwthsw ki egw kati panw se auto. H inet_ntoa bazei to apotelesma se
> static buffer. Yparxei kapoia etoimh analogh function pou einai thread
> safe?

  Σύμφωνα με την τεκμηρίωση της GNU libc, κάθε thread έχει το δικό του
buffer, οπότε δεν υπάρχει πρόβλημα. Προφανώς αυτό δεν ισχύει απαραίτητα και
για άλλες υλοποιήσεις. Εναλλακτικά, μπορείς να χρησιμοποιήσεις την
inet_ntop(3).

-- 
Vasilis Vasaitis
vvas at hal.csd.auth.gr





More information about the Linux-greek-users mailing list