2011-12-18 33 views
0

我想通过UDP发送命令到服务器。服务器需要在开始的几个十六进制字节,虽然PHP这是很容易发送十六进制和字符串到UDP

'\xFF\xFFcmd command variable'

然后我fwrite(),没有问题。

现在我正在Cocoa建立一个客户端,我无法让服务器理解我,数据已发送,但我认为它不正确或已损坏。我试图用CocoaAsyncSocket做到这一点..

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命令变量”,但服务器,我没有进入,侦听恶意数据包上发生什么。

我的猜测是,通过将0xFF的成字符串,它不再是相同的,并且错误地发送..

回答

0

解决问题。 NSString与\ xff搞混了。

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

为了得到变量一个NSString或其他什么东西..

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]; 
相关问题