이미 m_ListenSocket 소켓을 초기화하는 시점에서 EndPoint에 IP 주소와 포트 번호를 기재해서 Bind 메서드를 호출하고 계신데, 구체적으로 어떤 세부 정보를 더 확인하고 싶으신지 알고 싶습니다.
b. 리스닝 소켓이 Accept로 클라이언트 연결을 수신하기 전에 클라이언트 IP 주소를 알 수 있는가
알 수 없습니다. Accept로 연결을 맺은 상태에서만 수신된 연결에 대한 정보를 알 수 있습니다.
c. 여러 클라이언트 연결을 처리하기 위해서 Accept 메서드를 사용했지만 블로킹이 걸려서 다음 연결을 처리하지 못하고 있다.
연결을 Accept로 받은 이후 다음 소켓에 대한 정보를 미리 얻고 싶다는 취지에서 질문하신 부분이라면, Accept는 동기식 메서드이기 때문에 목적을 달성할 수 없습니다. 비동기 방식의 BeginAccept/EndAccept 짝을 사용하더라도, 2에서 말씀드린 것처럼 소켓 연결이 맺어지기 전에 클라이언트 측의 정보를 얻을 수 있는 방법은 없습니다.
소켓 프로그래밍을 할 때는 비동기 방식의 I/O를 사용하는 것이 정석입니다. 이는 C, C++을 포함하여 모든 버클리 소켓 API들이 기본으로 전제하는 사항이며, 비동기 프로그래밍 기법은 매우 다양합니다. C# 기준으로는 다음의 Microsoft Docs 아티클을 참고하시면 도움이 될 것 같습니다.