자바 서버로 보내는 메시지를 구걸하는데 정수와 정수를 넣어야합니다. 서버는 짧은 (메시지 ID) 다음 정수 (메시지 길이)를 읽으 려합니다. NSMutableData는 java ByteBuffer와 비슷한 stackoverflow를 읽었습니다.NSMutableData를 사용하는 Objective-C 패킹 데이터?
메시지를 NSMutableData에 압축하여 보내려고합니다.
그래서 내가 가지고있는 것이지만 작동하지 않습니다!
NSMutableData *data = [NSMutableData dataWithLength:(sizeof(short) + sizeof(int))];
short msg_id = 2;
int length = 198;
[data appendBytes:&msg_id length:sizeof(short)];
[data appendBytes:&length length:sizeof(int)];
send(sock, data, 6, 0);
서버는 Java ByteBuffer를 사용하여 수신 된 데이터를 읽습니다. 따라서 들어오는 바이트 수는 다음과 같습니다.
32,120,31,0,2,0
의 ByteBuffer 그래서 올바른 값은 .getShort()와 .getInt()로 읽을 수
0,2,0,0,0,-66
+1,하지만 그는 올바르게'dataWithCapacity :'대신'dataWithLength :'를 사용하고 있기 때문에 데이터를 NSData 객체에 올바르게 넣고 있다고 생각하지 않습니다. – dreamlax
Dreamlax에 감사드립니다. 나는 [data bytes]와 dataWithCapacity를 사용했다. 나는 실제로 서버 측에서 2,0,5,8,0,0,0 바이트를 얻고있다. 바이트는 역순입니다. 내가 보내기 전에 어떻게 고칠 수 있겠 어. 다른 java csci와 잘 작동하는 서버를 변경하고 싶지 않습니다. any recommendation – Unis
다시 한번 HTONS (msg_id)와 HTONL (length)을 사용했습니다. 바이트 순서가 올바르지 않습니다. – Unis