Unlike the synchronous Accept, BeginAccept doesn\'t provide a socket for the newly created connection. EndAccept however does, but it
Accept
BeginAccept
EndAccept
This is normal when you deal with callback-based async IO. And it is what makes it so awful to use!
Can you use C# await? That would simplify this to a simple while (true) { await accept(); } loop.
while (true) { await accept(); }