Your description is vague but let me try :)
On machine B you deploy a service with contract like
[ServiceContract]
interface IMyService{
[OperationContract]
bool HasDataForB();
[OperationContract]
Data GetData();
}
On machine A you call HasDataForB with certain interval and when it returns true you just call GetData().