---
name: "modbus_tcp_pi_listen"
section: "3"
platform: "linux"
package: "libmodbus-dev"
version: "3.1.6-2.1"
release: "Debian 12 (Bookworm)"
platforms: ["linux"]
url: "https://new.carta.tech/modbus_tcp_pi_listen"
---

# modbus\_tcp\_pi\_listen(3)

create and listen a TCP PI Modbus socket (IPv6)

## NAME

modbus\_tcp\_pi\_listen - create and listen a TCP PI Modbus socket (IPv6)

## SYNOPSIS

**int modbus\_tcp\_pi\_listen(modbus\_t \****ctx***, int** *nb\_connection***);**

## DESCRIPTION

The **modbus\_tcp\_pi\_listen()** function shall create a socket and listen to maximum *nb\_connection* incoming connections on the specified nodes. The context **ctx** must be allocated and initialized with [**modbus\_new\_tcp\_pi**(3)](/modbus_new_tcp_pi/3.md) before to set the node to listen, if node is set to NULL or *0.0.0.0*, any addresses will be listen.

## RETURN VALUE

The function shall return a new socket if successful. Otherwise it shall return -1 and set errno.

## EXAMPLE

For detailed examples, see source files in tests directory:

• unit-test-server.c, simple but handle only one connection

```
...
ctx = modbus_new_tcp_pi("::0", "502");
s = modbus_tcp_pi_listen(ctx, 1);
modbus_tcp_pi_accept(ctx, &s);
for (;;) {
    rc = modbus_receive(ctx, query);
    modbus_replay(ctx, query, rc, mb_mapping);
}
...
mclose(s);
modbus_free(ctx);
```

• bandwidth-server-many-up.c, handles several connections at once

## SEE ALSO

[**modbus\_new\_tcp\_pi**(3)](/modbus_new_tcp_pi/3.md) [**modbus\_tcp\_pi\_accept**(3)](/modbus_tcp_pi_accept/3.md) [**modbus\_tcp\_listen**(3)](/modbus_tcp_listen/3.md)

## AUTHORS

The libmodbus documentation was written by Stéphane Raimbault \<stephane.raimbault@gmail.com\>
