자바와 C와의 네트워크 통신 질문입니다.
소심한여자
간단한 통신 tcp 통신 프로그래밍 중입니다. java와 c/c++간에요.
오류는 없습니다.
간단하게 c에서 패킷을 하나 정의했다고 하겠습니다.
struct test_packet
{
int packettype;
char valuestring[32];
short valueshort;
} packet;
이 패킷에 값을 채웠습니다. int형과 short형은 그냥 넣었고요, valuestring은 다음 처럼 sprintf를 이용했습니다.
sprintf( valuestring , %s , teststring );
이건 보내면 자바에서 잘 받습니다.
문제는, 파싱입니다. c - c 간의 통신에서는 그냥 포인터로 받거나 memcpy 하면 그만 인데요.
자바로 하니까 파싱이 너무 힘듭니다. 쉽게 하는 법이나 노하우없으려나요?
지금은 모두 byte로 바꿔서 그걸 다시 인트형 버퍼, 숏형 버퍼 이런 식으로 변환후에 값일 읽고 있습니다. ㅡ.ㅡa
그리고, 다음 문제는 valuestring의 값입니다.
c에서 valuestring을 teststring으로 채웠다면 메모리 내용은 teststring\0뒤에 쓰레기값들 이 됩니다.
java에서 지금 bytebuffer의 get을 이용해서byte[]에 읽은 후에 이 byte[]을 for문 돌면서 \0 이 나올 때까지
한바이트씩 읽은 다음에(결국 문자열의 길이 파악) string으로 바꾸고 있습니다.
읽어들인 32바이트의 byte[]을string에 넣으면 \0까지만 문자열로 바뀌는게 아니라 그 뒤의 쓰레기값들까지
전부 다 string에 들어가더라고요. 이것도 무슨 방법 없을까요?
그럼 감사합니다.