Erwtisi gia socket programming

Giorgos Keramidas keramidi at otenet.gr
Thu Apr 12 00:51:01 EEST 2001


On Wed, Apr 11, 2001 at 04:21:46PM +0300, Michalis Kabrianis wrote:
> Geia sa*.
> Mia erwtysy gia socket programming.
> An anoicw ena socket se ena myxanyma me 2 IPs (sto idio diktuo) kai meta
> kanw connect uparxei tropo* na cerw apo poia IP ha kanei to connect?
> An tyn kanw (prin to connect) bind me IN_ADDRANY uparxei tropo* na cerw
> poia IP ha kanei to connect?
> Ti einai auto pou kahorizei to poia IP xrysimopoieitai?

An thes na 'akouei' mono se ena sugkekrimeno IP to socket sou, des parakatw:

     1	int sd;				/* socket descriptor */
     2	struct sockaddr_in addr;	/* address to bind */
     3	short port = 12345;		/* port to bind */
     4	
     5	bzero(&(char *) &addr, sizeof(addr));
     6	addr.sin_family = PF_INET;
     7	if (inet_aton("127.0.0.1", &addr.sin_addr) == 0) {
     8		/* error ... */
     9	}
    10	addr.sin_port = htons(port);
    11	
    12	if (bind(sd, (struct sockaddr *) &addr, sizeof(addr)) < 0) {
    13		/* error ... */
    14	}

H allagh einai stis grammes 7 - 10, pou anti na exei

	addr.sin_addr.s_addr = INADDR_ANY;

exei kwdika pou bazei sto address MONO ena sugkekrimeno IP pou tha kanei listen
to socket.

An thes na akous se opoiodhpote IP, kai apla otan kapoios kanei connect pano
sou na deis se poio ta IP sou ekane connect, tote sto bind() sou bale
INADDR_ANY alla otan kaneis accept() des ti sou epistrefei sto deutero argument
ths accept(), h kalese kapoia stigmh sto socket sou thn getsockname() function.

     1	int sd;
     2	struct sockaddr_in addr;
     3	int addrlen = sizeof(addr);
     4	
     5	if (getsockname(sd, (struct sockaddr *) &addr, &addrlen) < 0) {
     6		/* error ... */
     7	}
     8
     9	printf("My IP address is %s.\n", inet_ntoa(addr.sin_addr));

Elpizo na boh8hsa kapos :)

--giorgos




More information about the Linux-greek-users mailing list