2011-12-18 14 views
0

UDPを介してサーバーにコマンドを送信しようとしています。サーバはPHPものの、最初にいくつかの六角バイトを必要とし、これはその後、私は問題なくことをfwrite()UDPに16進数と文字列を送信する

'\xFF\xFFcmd command variable'

簡単です。

今、私はCocoaでクライアントを構築していますが、サーバーが私に何かを理解させることはできません。データは送信されますが、間違っているか破損していると思います。私はMSGの

NSString *msg = [NSString stringWithFormat:@"%c%ccmd command variable",0xFF,0xFF];[socket connectToHost:@"85.25.248.160" onPort:28960 error:nil]; 

unsigned char lendata = [msg length]; 
NSMutableData *senddata = [NSMutableData dataWithBytes: &lendata length:sizeof(lendata)] ; 
[senddata appendData:[msg dataUsingEncoding:NSUTF8StringEncoding]]; 

[socket sendData:senddata withTimeout:-1 tag:0]; 

のNSLogは「cmdは、変数」コマンドが、何も私は、へのアクセスを持っていない不正なパケットをリッスンするために、サーバー上で発生していない..ですCocoaAsyncSocketでそれをやろうとしています。

私の推測では、

答えて

0

解決の問題。。文字列には0xFFを置くことによって、それはもはや同じであり、誤って送信されることはありません。 NSStringは\ xffを使いこなしていました。 NSStringのか、何か他のもののように変数を取得するには

char *bytes = "\xff\xffcmd command variable"; 
NSData* data = [[NSData alloc] initWithBytes:bytes length:strlen(bytes)]; 
[socket sendData:data withTimeout:-1 tag:0]; 

..

char *bytes = "\xff\xff"; 
NSString *commands = [[NSString alloc] initWithFormat:@"command %@", variable]; 
NSMutableData *data = [[NSMutableData alloc] initWithBytes:bytes length:strlen(bytes)]; 
[data appendData:[commands dataUsingEncoding:NSUTF8StringEncoding]]; 
[socket sendData:data withTimeout:-1 tag:0]; 
関連する問題