Howdy all,
Christoph and I have more or less finished some work that updates Pd's networking and also fixes some bugs and a couple pain points:
* IPv6 support * multicast * netsend: optional from hostname & port outlet * netsend: connectionless UDP, no more connection refused (fire & forget without having to manually reconnect) * netreceive: settable timeout which defaults to 10 seconds (no more super-long frozen Pd) * improved error printing with netsend and netrceive Find Last Error support * various small bug fixes (no more polling errors after socket is closed)
The pdsend & pdreceive utils are similarly updated.
The discussion & pull request on Github: https://github.com/pure-data/pure-data/pull/577 https://github.com/pure-data/pure-data/pull/577
If you can build Pd and want to try this out, the branch is called feature/netobject-updates
The overall approach taken is to keep IPv4 as default and detect IPv6 addresses so this should not affect existing patches. The IP version handling should also degrade gracefully based if IPv6 is not available. An added bonus is hostnames now resolve (ie. google.com http://google.com/) and you can also listen on a hostname if your system can grab it (ie. computername.local).
One current limitation is that Tcl 8.5 does not have IPv6 support, so the core communication with the GUI remains IPv4.
-------- Dan Wilcox @danomatika http://twitter.com/danomatika danomatika.com http://danomatika.com/ robotcowboy.com http://robotcowboy.com/
Ah whoops. I meant to write "Christof."
On Aug 11, 2019, at 3:49 AM, Dan Wilcox danomatika@gmail.com wrote:
Howdy all,
Christoph and I have more or less finished some work that updates Pd's networking and also fixes some bugs and a couple pain points:
-------- Dan Wilcox @danomatika http://twitter.com/danomatika danomatika.com http://danomatika.com/ robotcowboy.com http://robotcowboy.com/
also with Pd 0.50 <-> Pd 0.49 and Pd 0.50 <-> [some other IPv4-only endpoint]!
Been testing 0.50 (win & linux) <-> 0.49(win) & UDP Terminal (android).
It's working nice.
:)
Mensaje telepatico asistido por maquinas.
On 8/11/19 9:03 AM, Christof Ressi wrote:
The overall approach taken is to keep IPv4 as default and detect IPv6 addresses so this should not affect existing patches
We've tried hard to maintain backwards compatibility with existing IPv4-only endpoints, so please don't only test with Pd 0.50 <-> Pd 0.50 but also with Pd 0.50 <-> Pd 0.49 and Pd 0.50 <-> [some other IPv4-only endpoint]!
Christof
Gesendet: Sonntag, 11. August 2019 um 03:49 Uhr Von: "Dan Wilcox" danomatika@gmail.commailto:danomatika@gmail.com An: pd-dev pd-dev@lists.iem.atmailto:pd-dev@lists.iem.at Betreff: [PD-dev] networking updates Howdy all,
Christoph and I have more or less finished some work that updates Pd's networking and also fixes some bugs and a couple pain points:
* IPv6 support * multicast * netsend: optional from hostname & port outlet * netsend: connectionless UDP, no more connection refused (fire & forget without having to manually reconnect) * netreceive: settable timeout which defaults to 10 seconds (no more super-long frozen Pd) * improved error printing with netsend and netrceive Find Last Error support * various small bug fixes (no more polling errors after socket is closed)
The pdsend & pdreceive utils are similarly updated.
The discussion & pull request on Github: https://github.com/pure-data/pure-data/pull/577
If you can build Pd and want to try this out, the branch is called feature/netobject-updates
The overall approach taken is to keep IPv4 as default and detect IPv6 addresses so this should not affect existing patches. The IP version handling should also degrade gracefully based if IPv6 is not available. An added bonus is hostnames now resolve (ie. google.comhttp://google.com) and you can also listen on a hostname if your system can grab it (ie. computername.local).
One current limitation is that Tcl 8.5 does not have IPv6 support, so the core communication with the GUI remains IPv4.
-------- Dan Wilcox @danomatikahttp://twitter.com/danomatika danomatika.comhttp://danomatika.com robotcowboy.comhttp://robotcowboy.com
_______________________________________________ Pd-dev mailing list Pd-dev@lists.iem.atmailto:Pd-dev@lists.iem.at https://lists.puredata.info/listinfo/pd-dev
N�n�r����)em�h�yhiם�w^���
On 8/10/19 10:49 PM, Dan Wilcox wrote:
If you can build Pd and want to try this out, the branch is called feature/netobject-updates
When trying to build this one I get:
u_pdsend.c:14:10: fatal error: s_net.h: No such file or directory #include <s_net.h> ^~~~~~~~~ compilation terminated. make: *** [makefile.gnu:170: ../bin/pdsend] Error 1
I'm on linux, using the package downloaded as zip from: https://github.com/pure-data/pure-data/tree/feature/netobject-updates
--
Mensaje telepatico asistido por maquinas.
Hey Dan
On Sun, 2019-08-11 at 03:49 +0200, Dan Wilcox wrote:
Christoph and I have more or less finished some work that updates Pd's networking and also fixes some bugs and a couple pain points:
Cool. Thank you both!
I did test a few things with patches I just made up (on Ubuntu 18.04), since my network-based patches usually use iemnet. Although, I can't help you out with real-world data, here are some findings:
- IPv6 support
I wasn't able to test yet. I was worried about the future with Pd and networking, but don't have to be now, thanks to you ;-)
- multicast
Works for me, between different computers in the same LAN and also between different software (nc -> Pd, Pd <-> Pd).
- netsend: optional from hostname & port outlet
That's really useful and absolutely necessary when dealing with multiple incoming connections. Only now it is possible to write server- like patches with Pd-vanilla.
- netsend: connectionless UDP, no more connection refused (fire &
forget without having to manually reconnect)
Although the old behavior was "correct" in some sense (it was nitpickingly correct to terminate a link to an endpoint detected not to be existent), I think the new behavior is much more useful. It works well for me, I can shut down the receiving host, restart the software or even replace the software by another listening on the same port, the packets still arrive.
- netreceive: settable timeout which defaults to 10 seconds (no more
super-long frozen Pd)
Definitely an improvement, too. The OS defaults are way too long. The default is good, having it settable even better.
- improved error printing with netsend and netrceive Find Last Error
support
- various small bug fixes (no more polling errors after socket is
closed)
Nice.
One current limitation is that Tcl 8.5 does not have IPv6 support, so the core communication with the GUI remains IPv4.
I wouldn't know why the internal connection should switch to IPv6. My gut feeling is that such things will stay on IPv4 for quite long.
One little thing bugs me in the help file of [netsend] and I just noticed that it was there since at least 0.47: The different modes are labeled 'ASCII' vs. 'binary'. I think 'ASCII' is misleading in that there are semantics in the message format. Spaces have meaning, messages are always terminated by semi-colon. You can't use the 'ASCII' mode for generating arbitrary messages. 'ASCII' suggests you could use it to write valid HTTP requests which you can't. I think 'ASCII' should be re-labeled as 'FUDI', since that it is the protocol the non-binary mode actually uses.
I think these are _very_ valuable improvements for Pd's net objects. I can't think of a reason not to include them. Of course, it would be interesting to get some feedback also from people who actually have patches that heavily use those objects.
Roman