[PD-cvs] SF.net SVN: pure-data:[10362] trunk/externals/mrpeach/net/udpreceive.c

mrpeach at users.sourceforge.net mrpeach at users.sourceforge.net
Wed Nov 5 20:34:16 CET 2008


Revision: 10362
          http://pure-data.svn.sourceforge.net/pure-data/?rev=10362&view=rev
Author:   mrpeach
Date:     2008-11-05 19:34:15 +0000 (Wed, 05 Nov 2008)

Log Message:
-----------
Added port number to ip outlet as suggested by zmoelnig

Modified Paths:
--------------
    trunk/externals/mrpeach/net/udpreceive.c

Modified: trunk/externals/mrpeach/net/udpreceive.c
===================================================================
--- trunk/externals/mrpeach/net/udpreceive.c	2008-11-05 19:06:23 UTC (rev 10361)
+++ trunk/externals/mrpeach/net/udpreceive.c	2008-11-05 19:34:15 UTC (rev 10362)
@@ -31,7 +31,7 @@
     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 @@
     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 @@
 #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 @@
         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;


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Pd-cvs mailing list