2011-07-25 9 views
0

私は客観的なCネットワーキングの初心者です。私はシンプルなWOLアプリケーションのために以下のコードをまとめました。私は正常にソケットを作成し、アドレスを設定することができます(私はローカルマシンのアドレスを設定することができますが、別の質問thats)。 しかし、CFSocketSendDataを使用してデータを送信しようとすると、データは送信されません(送信されなかったデータメッセージが表示されます)。 CFSocketSendDataを正しく使用していますか、または別の場所に問題がありますか?CFSocketSendDataはデータを送信しませんか?

ご協力いただきありがとうございます。ありがとうございます。

struct sockaddr_in addr;

 memset(&addr, 0, sizeof(addr)); 
     addr.sin_len = sizeof(addr); 
     addr.sin_family = AF_INET; 
     addr.sin_port = htons(PORT); //port 
     inet_aton(IP, &addr.sin_addr);//IP is the network IP of the machine e.g 192.168.0.2 


     NSData *address = [NSData dataWithBytes: &addr length: sizeof(addr)]; 

     if (CFSocketSetAddress(WOLsocket, (CFDataRef)address) != kCFSocketSuccess){ 
      NSLog(@"Address could not be set!"); 
     } 
     else{ 
      NSLog(@"Address set"); 
      char ethadd []= "helloworld"; 
      CFDataRef Data = CFDataCreate(NULL, (const UInt8*)ethadd, sizeof(ethadd)); 
      if (CFSocketSendData(WOLsocket, NULL, Data, 0) < 0){ 
       NSLog(@"Data could not be sent!"); 
      } 
      else NSLog(@"Data Sent"); 
     } 

答えて

1

あなたのスニペットでCFSocketCreate(...)コードを含んでいませんでしたが、私はあなたがデフォルト、PF_INETの家族やTCPプ​​ロトコルを選択したことを想定しています。

TCPプロトコルでは、アドレスを設定するだけでは十分ではありません。宛先エンドポイントに 接続を確立する必要があります。

CFSocketSendData(WOLsocket, NULL, Data, 0)

...そして、あなたのデータを送信...

CFSocketConnectToAddress (WOLsocket, address, 10.0);

を関数を呼び出すファースト

関連する問題