In your circumstance, there's nothing stopping you creating multiple sessions with a single peer (I have a solution working which so far is running fine with up to 16 peers). BTW, this answer may also help
Option 1:
A->B (session 1)
A->C (session 1)
Option 2:
A->B (session 1)
A->C (session 2)
In option 2, you can simply [session disconnect] for A->C without impacting A->B
- (void)advertiser:(MCNearbyServiceAdvertiser *)advertiser didReceiveInvitationFromPeer:(MCPeerID *)peerID withContext:(NSData *)context invitationHandler:(void(^)(BOOL accept, MCSession *session))invitationHandler
...
terminalDev.session = [self newSession];
terminalDev.peerID = peerID;
invitationHandler(YES, terminalDev.session);
- (void)browser:(MCNearbyServiceBrowser *)browser foundPeer:(MCPeerID *)peerID withDiscoveryInfo:(NSDictionary *)info
// save the peerID for later communications
hostDevice.peerID = peerID;
// and ask the browser to invite the peer(host) to the session for this device
hostDevice.session = [self newSession];
DDLogDebug(@"Inviting Host %@ to session %@", remotePeerName, hostDevice.session);
[browser invitePeer:peerID toSession:hostDevice.session withContext:nil timeout:30.0];