2011-12-20 18 views
0

ネットワークに存在するデバイスを検出できません。 私は2つのアプリケーションを使用しています。 1つはC++で書かれていて、もう1つはWindows phone 7のアプリです。 Wp7から私が参照したUDPブロードキャストを送信していますHow to broadcast a UDP packet on WP7 Mango? wp7からメッセージをブロードキャストでき、C++のアプリケーションで受信できました.C++コードからUDPパケットを受信できません。 ここに私のコードです。 C#コードWindowsの電話機でのデバイス検出7

private void PageTitle_Tap(object sender, GestureEventArgs e) 
     { 
      var ipAddress = IPAddress.Parse("255.255.255.255"); 
      var endpoint = new IPEndPoint(ipAddress, 4998); 
      byte[] data = Encoding.UTF8.GetBytes("hello|4998"); 
      var args = new SocketAsyncEventArgs(); 
      args.RemoteEndPoint = endpoint; 
      args.SetBuffer(data, 0, data.Length); 
      args.Completed += new EventHandler<SocketAsyncEventArgs>(args_Completed); 
      socket = new Socket(AddressFamily.InterNetwork, 
       SocketType.Dgram, 
       ProtocolType.Udp); 
      bool result = socket.ConnectAsync(args); 

     } 

     void args_Completed(object sender, SocketAsyncEventArgs e) 
     { 
      if (e.SocketError != SocketError.Success) 
      { 
       return; 
      } 

      switch (e.LastOperation) 
      { 
       case SocketAsyncOperation.Connect: 
        bool res = e.ConnectSocket.ReceiveFromAsync(e); 
        break; 

       case SocketAsyncOperation.Send: 
        break; 

       case SocketAsyncOperation.Receive: 
        break; 
      } 
     } 

C++コード

ServerAddress.sin_family= AF_INET; 
ServerAddress.sin_addr.s_addr= INADDR_ANY; 
ServerAddress.sin_port = htons (PORT_DESKTOP); 
ServerSocket = socket (PF_INET, SOCK_DGRAM, 0); 

sendto (ServerSocket, Buffer, sizeof (Buffer), 0, (LPSOCKADDR) &ClientAddress, Length); 

また、私はC++コードからの応答を受け取ることができないのですmessage.Butを受信するIPADDRESS.Anyを使用して別のソケットの作成に使用しています。

ありがとうございます。

答えて

0

有効にしていますか?SO_BROADCAST

SOL_SOCKET Socket Options

SO_BROADCASTはいはいDWORD(ブール値) 放送データを送信するためのソケットを設定します。このオプションは、 ブロードキャスト(IPXとUDPなど)をサポートするプロトコルに対してのみ有効です。