Ok, I just tried it between my laptop and desktop.
Again connect doesn't work with an IP address (or any hostname with a dot in it) so I had to throw the server's IP into /etc/hosts and give it a simple name. Then connect works using that name.
The weird thing is it seems to use both 47777 and 7777.. but I get the impression that the client (connecting player!) is the one who binds 47777 and the server sends messages back to that port (192.168.1.6 is my server here):
[pid 23897] bind(25<UDPv6:[5853971]>, {sa_family=AF_INET6, sin6_port=htons(47777), sin6_flowinfo=htonl(0), inet_pton(AF_INET6, "::", &sin6_addr), sin6_scope_id=0}, 28) = 0
[pid 24001] recvfrom(25<UDPv6:[[::]:47777]>, "\0\0\t\342z\0\0\10\256\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 2000, MSG_NOSIGNAL, {sa_family=AF_INET6, sin6_port=htons(57317), sin6_flowinfo=htonl(0), inet_pton(AF_INET6, "::ffff:192.168.1.6", &sin6_addr), sin6_scope_id=0}, [128->28]) = 115
Meanwhile server:7777 is used for bidirectional comms:
[pid 24001] recvfrom(26<UDPv6:[[::]:42180]>, "\0\1\320\3205\v\0\201\367\2\n\f<B\315\314\200A\0\0pB\30\0\0\0<B\315\314\200A"..., 2000, MSG_NOSIGNAL, {sa_family=AF_INET6, sin
6_port=htons(7777), sin6_flowinfo=htonl(0), inet_pton(AF_INET6, "::ffff:192.168.1.6", &sin6_addr), sin6_scope_id=0}, [128->28]) = 567
strace: Process 24006 attached
[pid 24001] sendto(26<UDPv6:[[::]:42180]>, "\0\1\277\217\336\v\0K\2\0\1\36\0\5\0\373\207\342\260\364\323\n\0Intruder3"..., 83, MSG_NOSIGNAL, {sa_family=AF_INET6, sin6_port=
htons(7777), sin6_flowinfo=htonl(0), inet_pton(AF_INET6, "::ffff:192.168.1.6", &sin6_addr), sin6_scope_id=0}, 28) = 83
[pid 24001] recvfrom(26<UDPv6:[[::]:42180]>, "\0\1\320\3215\v\0\16\3\0\1\7\0\2\0\373p\356\335\331\323\0", 2000, MSG_NOSIGNAL, {sa_family=AF_INET6, sin6_port=htons(7777), si
n6_flowinfo=htonl(0), inet_pton(AF_INET6, "::ffff:192.168.1.6", &sin6_addr), sin6_scope_id=0}, [128->28]) = 22
[pid 24001] recvfrom(26<UDPv6:[[::]:42180]>, "\0\1\320\3225\v\0A\4\0\1:\0\10\0\323\372\0\334\1\0\n\0Intruder3"..., 2000, MSG_NOSIGNAL, {sa_family=AF_INET6, sin6_port=htons(
7777), sin6_flowinfo=htonl(0), inet_pton(AF_INET6, "::ffff:192.168.1.6", &sin6_addr), sin6_scope_id=0}, [128->28]) = 73
[pid 24001] sendto(26<UDPv6:[[::]:42180]>, "\0\0\4\277\220\336\v\0\1\0\1\0\0>\301\0\0036\303\0\0\1\336\0\0\v5", 27, MSG_NOSIGNAL, {sa_family=AF_INET6, sin6_port=htons(7777)
, sin6_flowinfo=htonl(0), inet_pton(AF_INET6, "::ffff:192.168.1.6", &sin6_addr), sin6_scope_id=0}, 28) = 27
Not sure what the significance of port 47777 is, it seems to get less traffic but it's a bit weird that the client should bind a port? Go figure.
Gee, nice formatting GOG.