AsyncCallback после Socket.BeginReceive не вызывается, пока сервер инициализируется во время запуска.
mSocket.BeginReceive(mBuffer, 0, mBuffer.Length, SocketFlags.None, new AsyncCallback(onReceive), mSocket);
private void onReceive(IAsyncResult result)
{
if (mSocket == null) return;
Monitor.Enter(mLockObj);
mSocket.EndReceive(result);
//...
Нужно ли мне создавать некоторую логику тайм-аута или есть исключение, которое я могу поймать и обработать?





Поскольку AsyncCallback — это, ну, async, он будет ожидать получения неопределенно долго, пока не вернется, поэтому исключения «тайм-аут» не будет.
Некоторые параметры были изучены в эта тема, но, чтобы ответить на ваш вопрос, вам, по сути, придется реализовать собственный метод тайм-аута.