From 923bba14928a4053b664551e5f54acde719ec79f Mon Sep 17 00:00:00 2001 From: Martin Peach Date: Wed, 5 Nov 2008 19:34:15 +0000 Subject: Added port number to ip outlet as suggested by zmoelnig svn path=/trunk/externals/mrpeach/; revision=10362 --- net/udpreceive.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/net/udpreceive.c b/net/udpreceive.c index 3113866..0b2bbaa 100644 --- a/net/udpreceive.c +++ b/net/udpreceive.c @@ -31,7 +31,7 @@ typedef struct _udpreceive t_outlet *x_msgout; t_outlet *x_addrout; int x_connectsocket; - t_atom x_addrbytes[4]; + t_atom x_addrbytes[5]; t_atom x_msgoutbuf[MAX_UDP_RECEIVE]; char x_msginbuf[MAX_UDP_RECEIVE]; } t_udpreceive; @@ -47,6 +47,7 @@ static void udpreceive_read(t_udpreceive *x, int sockfd) struct sockaddr_in from; socklen_t fromlen = sizeof(from); long addr; + unsigned short port; read = recvfrom(sockfd, x->x_msginbuf, MAX_UDP_RECEIVE, 0, (struct sockaddr *)&from, &fromlen); #ifdef DEBUG @@ -55,11 +56,14 @@ static void udpreceive_read(t_udpreceive *x, int sockfd) #endif /* get the sender's ip */ addr = ntohl(from.sin_addr.s_addr); + port = ntohs(from.sin_port); + x->x_addrbytes[0].a_w.w_float = (addr & 0xFF000000)>>24; x->x_addrbytes[1].a_w.w_float = (addr & 0x0FF0000)>>16; x->x_addrbytes[2].a_w.w_float = (addr & 0x0FF00)>>8; x->x_addrbytes[3].a_w.w_float = (addr & 0x0FF); - outlet_list(x->x_addrout, &s_list, 4L, x->x_addrbytes); + x->x_addrbytes[4].a_w.w_float = port; + outlet_list(x->x_addrout, &s_list, 5L, x->x_addrbytes); if (read < 0) { @@ -128,7 +132,7 @@ static void *udpreceive_new(t_floatarg fportno) x->x_msgoutbuf[i].a_type = A_FLOAT; x->x_msgoutbuf[i].a_w.w_float = 0; } - for (i = 0; i < 4; ++i) + for (i = 0; i < 5; ++i) { x->x_addrbytes[i].a_type = A_FLOAT; x->x_addrbytes[i].a_w.w_float = 0; -- cgit v1.2.1