将Hex和String发送到UDP

时间:2011-12-18 21:04:18

标签: cocoa sockets udp

我正在尝试通过UDP向服务器发送命令。服务器在开头需要几个十六进制字节,尽管PHP很容易

'\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];

msg的NSLog是'cmd命令变量',但是在我无法访问的服务器上没有任何内容可以监听错误的数据包。

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

1 个答案:

答案 0 :(得分: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];