Yac CallerID Service

YAC is a caller ID software application that distributes caller ID information on a network. I’ve ported the caller ID code over to Object Pascal and created an application that will run as a service on NT. I create a service so that I could run the application on my Windows 2000 server and not have to be logged into the OS (runs when the computer is turned on and no one is logged into the machine).

I also implemented a UDP broadcast notification instead of just TCP. The benefit of the UDP broadcast is that you don’t have to configure the ip of each machine receiving the notification. If you are behind a router, then the UDP packet is not broadcast beyond it.

In addition to those features, you can also do text replacement for out of area phone numbers and also for cell phones that don’t give the name (just a generic cell phone label).


Yac UDP NT Service (499 kb)

Screenshot of Configuration Application

6 thoughts on “Yac CallerID Service”

  1. You’ve done a great job with this. I’ve been pulling my hair out trying to get caller ID working either via the serial port or via TAPI in my application and having no luck. My hobbyist coding skills aren’t quite up to par yet. I wanted to code it all myself, but I think your program will fill my needs quite well.

    Is it possible to configure what UDP port the broadcast occurs on?

  2. Thanks for the kind words. I hope you find it very useful.

    It doesn’t support changing the port without a change to the source code. Given the age of the project, I’m not sure that I could even recompile it at this point. The reason that I picked that port was due to existing YAC implementations at the time. Hopefully that will not be an issue for you.

  3. Hi James,

    Thanks for getting back to me. I managed to do what I was trying to do in another way, but I’ve run into another problem.

    On the same computer, I have your YAC utility installed as well as the regular YAC utility. I have the regular YAC program setup in listen only mode. In your utility, I have a listener configured to (the local machine). When I receive a call, the UDP broadcast fires perfectly, but the regular YAC utility never receives the caller ID information from your utility over TCP.

    Any ideas why? I’m guessing it has something to do with the fact that I’m trying to send the TCP message from the same machine I’m attempting to receive it on.

    Thanks again.

  4. Whenever you send out an UDP broadcast, the packet only goes out on the adapter or IP address subnet to which it is bound. By default that will typically be an IP address handed to it by the router (DHCP). So if you have a listener bound on, then it’s not going to receive the broadcast packet. What you can do though is set that one up as a specific IP to ping. For, that will only work from the same machine that it is on (since it will always be just local host).

    I believe that you can use the configuration UI to add a specific listener on the local host and see if that works. I know that I never tested that situation since my service was running on a home server.

    Let me know if that works out as it might be helpful to the next person (… if it actually works).

  5. Hi James,

    Oops, I don’t think I was clear. I did use the configuration UI to set a specific listen at This is for the tradition Yac TCP connections, correct?

    On the same computer, I have the regular Yac program running with just the “listen” parameter.

    I’ve also written another app that receives UDP broadcasts. There are no problems with the UDP broadcast from your app, that all works fine.

    The problem I am having with your app is that the specific TCP listeners. I can’t get the regular Yac app to receive them from your program.

    Summary: UDP from your app is perfect, not a single problem. TCP listeners setup in your app I can’t get working.

  6. Sorry, my mistake. Hmm… not sure about that. If I can get the source code loaded, I’ll look at the details of what is happening. That may take a bit though.

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload CAPTCHA.

Stop by for a few words on what is happening with the Callahan's.