NWConnection, UDP, and remote address

If I use NWConnection for a UDP connection, is there a way to get the peer name? Since it's not a stream, data can theoretically come from anywhere; at the C level, I'd use recvfrom which would tell me the remote address.

I'm likely to be missing something obvious to everyone but me, I do have a tendency to look at problems as C problems. 😄

Answered by DTS Engineer in 747905022

You’re right that UDP is not stream based but, when working with UDP, NWConnection acts like it is. An NWConnection models a UDP flow, that is, a series of datagrams that all have the some local IP / local port / remote IP / remote port tuple. This is very different from BSD Sockets and it means that there’s no need for the equivalent to the Sockets recvfrom API.

Share and Enjoy
—
Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

Accepted Answer

You’re right that UDP is not stream based but, when working with UDP, NWConnection acts like it is. An NWConnection models a UDP flow, that is, a series of datagrams that all have the some local IP / local port / remote IP / remote port tuple. This is very different from BSD Sockets and it means that there’s no need for the equivalent to the Sockets recvfrom API.

Share and Enjoy
—
Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

Ah ha! Ok, that makes sense.