Отправка Hex и String в UDP - PullRequest
       19

Отправка Hex и String в UDP

0 голосов
/ 19 декабря 2011

Я пытаюсь отправить команды на сервер через UDP. Вначале серверу требуется несколько шестнадцатеричных байтов, хотя в PHP это просто

'\xFF\xFFcmd command variable'

Тогда я fwrite(), что без проблем.

Сейчас я создаю клиент в Какао и не могу заставить сервер понять меня вообще, данные отправлены, но я думаю, что они неверны или повреждены. Я пытаюсь сделать это с 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 для msg - это 'переменная команды cmd', но на сервере, к которому у меня нет доступа, ничего не происходит для прослушивания искаженного пакета.

Я предполагаю, что, поместив 0xFF в строку, он уже не тот и отправляется неправильно ..

1 Ответ

0 голосов
/ 19 декабря 2011

Решенная проблема.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];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...