EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024  2025  <2026 Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024  2025  <2026
<== Date ==> <== Thread ==>

Subject: Re: Java PVA client: connect directly to known IOC endpoint without any search (no UDP multicast/unicast, no TCP directed search)
From: Abdalla Ahmad via Tech-talk <tech-talk at aps.anl.gov>
To: Usharani Kandula <ukandula at fnal.gov>, "White, Greg R." <greg at slac.stanford.edu>
Cc: "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov>
Date: Thu, 6 Aug 2026 05:49:14 +0000
Hi

Is it possible to do the same in channel access? i.e. Avoid UDP and TCP search and going directly to TCP connect?

Best Regards,
Abdalla


From: Tech-talk <tech-talk-bounces at aps.anl.gov> on behalf of White, Greg R. via Tech-talk <tech-talk at aps.anl.gov>
Sent: Tuesday, August 4, 2026 7:19 PM
To: Usharani Kandula <ukandula at fnal.gov>
Cc: tech-talk at aps.anl.gov <tech-talk at aps.anl.gov>
Subject: Re: Java PVA client: connect directly to known IOC endpoint without any search (no UDP multicast/unicast, no TCP directed search)

Hi Usharani, the first implementations of pvaccess for Java, pvAccessJava and pvDataJava did exactly what you want- as I understand it to be. I think there is an example in the Normative Types document for the type NTURI. Maybe that functionality has made it into more recent implementations. I hope so. 

Cheers 
Greg

On Aug 4, 2026, at 9:00 AM, Usharani Kandula via Tech-talk <tech-talk at aps.anl.gov> wrote:


Hello Team,

I’m looking for guidance on a Java PVA client use case where I already know the IOC endpoint for a PV (resolved via an internal lookup/database), and I want to connect directly to that IOC and read the PV without performing any PVA search.

Goal / Requirement

Given:
- PV name (example: `ABC:TEMP`)
- Known IOC endpoint (example: `127.0.0.1:5075`)

I want:
- No UDP multicast search
- No UDP unicast search
- No TCP directed search (i.e., avoid the `EPICS_PVA_NAME_SERVERS` search step)
- Instead: direct TCP connect + CreateChannel + read

In other words, since my internal lookup already tells me where the PV lives, I want to avoid asking the IOC again “do you have this PV?”

What I tried

1) Standard configuration to disable multicast/broadcast
I can disable multicast/broadcast discovery via:

```
EPICS_PVA_AUTO_ADDR_LIST=NO
EPICS_PVA_ADDR_LIST=
```

But the remaining supported approach is to use `EPICS_PVA_NAME_SERVERS=host:port`, which performs a directed TCP search. That still sends a search request to the IOC.

2) core-pva (Phoebus) low-level POC that skips search entirely
I built a proof-of-concept using `org.phoebus:core-pva:5.0.5` that successfully reads a PV from a known endpoint without any search.

High-level summary of the POC:
- Creates a `PVAClient`
- Creates a `PVAChannel`
- Unregisters it from search
- Creates a direct TCP handler to the known IOC endpoint
- Manually sets channel state to FOUND
- Registers the channel with the TCP handler (sends CreateChannelRequest)
- Connects and reads

This works (tested against a Python fake IOC), but it relies on package-private/internal APIs such as:
- `ClientTCPHandler`
- `ClientChannelState`
- `PVAChannel.setState()`
- `PVAChannel.registerWithServer()`
- `client.search.unregister()`

To access these, the POC code is placed in the same Java package as the library (`org.epics.pva.client`), which is not ideal for production.


Questions
1. Is there a supported/public Java API (in core-pva or elsewhere) to do a true direct connect to a known IOC endpoint without any search?

2. If not, would the community consider a change to core-pva to add a public API such as:

```java
PVAChannel connectDirect(String pvName, InetSocketAddress iocAddress)
```
that encapsulates the internal wiring currently required?

3. Are there protocol-level concerns with skipping search entirely (e.g., server GUID handling, channel lifecycle expectations) that would make this approach problematic?

Additional details

- Library: `org.phoebus:core-pva:5.0.5`
- Java: 21
- Current POC output shows successful connect/read and prints the returned `PVAStructure`.

Thanks in advance for any guidance.

Best regards,  
Usharani
Fermi National Accelerator Laboratory




Replies:
Re: Java PVA client: connect directly to known IOC endpoint without any search (no UDP multicast/unicast, no TCP directed search) Johnson, Andrew N. via Tech-talk
Re: Java PVA client: connect directly to known IOC endpoint without any search (no UDP multicast/unicast, no TCP directed search) Ralph Lange via Tech-talk
References:
Java PVA client: connect directly to known IOC endpoint without any search (no UDP multicast/unicast, no TCP directed search) Usharani Kandula via Tech-talk
Re: Java PVA client: connect directly to known IOC endpoint without any search (no UDP multicast/unicast, no TCP directed search) White, Greg R. via Tech-talk

Navigate by Date:
Prev: Re: Support for MKS Microvision2 RGA? Henrique F. Simoes via Tech-talk
Next: Re: Java PVA client: connect directly to known IOC endpoint without any search (no UDP multicast/unicast, no TCP directed search) Johnson, Andrew N. via Tech-talk
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024  2025  <2026
Navigate by Thread:
Prev: Re: Java PVA client: connect directly to known IOC endpoint without any search (no UDP multicast/unicast, no TCP directed search) White, Greg R. via Tech-talk
Next: Re: Java PVA client: connect directly to known IOC endpoint without any search (no UDP multicast/unicast, no TCP directed search) Johnson, Andrew N. via Tech-talk
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024  2025  <2026
ANJ, 07 Aug 2026 · Home · News · About · Talk · Base · Modules · Extensions ·
· Distributions · Download · Documents · Links · Licensing ·