Page 1 of 1

Network Notifications - no socket listening

Posted: Thu Feb 15, 2007 3:28 am
by hexually_active
Hi, new user to Growl, seems very cool. I'm having problems though with the network notifications. Specifically:
1. New install of current version.
2. Enable network notifications
3. Reboot machine
4. Run nmap against localhost (UDP) - yields nothing on 9887
5. Dig around and look at growl prefs file - shows network notifications enabled, and UDP port 9887
6. If doesn't appear to be opening a socket listening on the specified port?
7. Any ideas?

Posted: Thu Feb 15, 2007 4:13 am
by bgannin
Network notification support isn't that robust currently and we are aware of this. That said, there's also TCP port 23052 that may be used, so you'll want to check this as well.

Posted: Thu Feb 15, 2007 5:37 am
by hexually_active
Thanks for the quick response. I guess I have 3 options:

1. Wait for a new release with issues resolved
2. Fire up Xcode and try to work out the issues and submit a diff -u patch
3. Use the Java binding in my own socket server

I really like this, and think it has a lot of potential

Posted: Thu Feb 15, 2007 5:45 am
by The_Tick
Java bindings we're probably going to drop support for. I need to verify, but I believe they use the cocoa-java bridge, which is deprecated.

We're not focusing on networking for a few releases. It sorely needs it, but to be quite honest, so does everything else. Our focus is local notifications for now until at least 1.5.

But patches we can work with easily would definitely be welcome :)

Posted: Thu Feb 15, 2007 10:56 am
by IngmarStein
It works for me:

Code: Select all

ingmar@stonecutter:~$ netstat | grep 9887
udp46      0      0  *.9887                 *.*                    
Btw, bgannin, the TCP and UDP port serve two completely different purposes and use different protocols, you cannot just say "take the TCP port if UDP doesn't work for you".

Posted: Thu Feb 15, 2007 5:24 pm
by The_Tick
IngmarStein wrote:It works for me:

Code: Select all

ingmar@stonecutter:~$ netstat | grep 9887
udp46      0      0  *.9887                 *.*                    
Btw, bgannin, the TCP and UDP port serve two completely different purposes and use different protocols, you cannot just say "take the TCP port if UDP doesn't work for you".
Could you write documentation on it?

Posted: Thu Feb 15, 2007 5:29 pm
by IngmarStein
From http://growl.info/documentation/developer/protocol.php:
Growl currently supports two different network protocols:
  • Distributed Objects over TCP (port 23052)
    GrowlTalk over UDP (default port: 9887)
This document describes the UDP protocol.
I don't have any user-level documentation on networking, though.

Posted: Thu Feb 15, 2007 5:53 pm
by The_Tick
So why couldn't the tcp port be used if udp does not work? That's what I was wondering.

Posted: Thu Feb 15, 2007 6:42 pm
by IngmarStein
I just wanted to point out that you cannot use both ports interchangeably because they use two very different protocols. If you want to use GrowlTalk, you cannot just switch from UDP/9887 to TCP/23052 and expect things to work.

Posted: Thu Feb 15, 2007 9:07 pm
by The_Tick
So how do we make it so the user can do that? Our networking is always a pain point for us because nobody understands how it works except for a very small group of people, and the people using it have all these weird misconceptions about how networking works in general, or really weird networking setups.

I'd really like something that just tries one, and then tries the other, rather than forcing the user to know a thing about networking. How can we make it easy?

Posted: Sat Feb 17, 2007 4:30 am
by hexually_active
UPDATE: Thanks for the dialog. After looking at the source, and also learning that nmap is a poor tool for reporting listening UPD ports, I was able to send a UDP DGRAM successfully and it works great!

For anybody else trying to use the PHP class from http://the.taoofmac.com.nyud.net:8090/s ... tgrowl.php

I had to modify the socket calls from socket_send_to, to socket_write.