2012-04-27 23 views
1

自分のパケットをマルチキャストで送信することができません。私は2つのUdpclient受信機を作成し、マルチキャストグループ上のパケットを受信し、送信者はパケットを送信することになります。あなたがする必要があるすべてはあなたのEndReceive後に再度BeginReceiveを呼び出すです自分のMcastパケットを受信できません。C#UdpClient

public void Join() 
    {   
      IPAddress ip1 = IPAddress.Any; 
      localep = new IPEndPoint(ip1, port); 

      Receiver = new UdpClient(); 
      Receiver.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true); 
      Receiver.Client.Bind(localep); 

      Sender = new UdpClient(); 
      Sender.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true); 
      Sender.Client.Bind(localep); 

      IPAddress ip = IPAddress.Parse(IP); 
      remoteep = new IPEndPoint(ip, port); 


      Sender.JoinMulticastGroup(ip); 
      Sender.EnableBroadcast = true; 
      Sender.MulticastLoopback = true; 

      Receiver.JoinMulticastGroup(ip); 
      Receiver.EnableBroadcast = true; 
      Receiver.MulticastLoopback = true; 

      udpState.ipEndpt = RemoteIpEndPoint; 
      udpState.udpClient = Receiver; 

      Receiver.BeginReceive(new AsyncCallback(GetMsg), udpState);    

    } 



void GetMsg(IAsyncResult ar) 
{ 


UdpClient udpClient = (UdpClient)((UdpState)(ar.AsyncState)).udpClient; 
      IPEndPoint ipEndpt = (IPEndPoint)((UdpState)(ar.AsyncState)).ipEndpt; 
      RecByte = Receiver.EndReceive(ar, ref ipEndpt); 
} 
//Sending packets logic 

McastOTS.Sender.Send(sendBytes, sendBytes.Length, McastOTS.remoteep); 

答えて

0

は私には思える....私のパケットがグループに送信されますが、私は、パケットが、私が送って戻って受信することはできません。それ以外の場合、メッセージは1つしか表示されず、他のメッセージは表示されません。

void GetMsg(IAsyncResult ar) 
{ 
    UdpClient udpClient = (UdpClient)((UdpState)(ar.AsyncState)).udpClient; 
    IPEndPoint ipEndpt = (IPEndPoint)((UdpState)(ar.AsyncState)).ipEndpt; 
    RecByte = Receiver.EndReceive(ar, ref ipEndpt); 
    Receiver.BeginReceive(GetMsg, udpState); 
} 
関連する問題