[질문]소켓 읽기
글쓴이: yshwindow / 작성시간: 월, 2007/08/20 - 7:00오후
클라이언트로 부터 날아오는 데이터를 소켓을 사용하여 읽고 있습니다.
날아오는 데이터의 길이는 지정된 길이(1024)보다 작긴하나 가변 적입니다.
unsigned char data[1024]; bytes_read = read(client_sockfd, (void *)&data_tmp, sizeof(data_tmp)); if(bytes_read < 0) { close(client_sockfd); break; }
지금은 이런 식으로 하고 있는데, data 배열의 크기를 동적으로 잡아서 사용하고 싶습니다.
실질적으로 소켓을 읽기전에 소켓에 쌓인 데이터 크기를 알아낸후 data의 크기를 그에 알맞게 잡고 싶은데, (아래처럼..)
1.read len 2.memory 할당 3.read data 4.memory 해제
소켓에 데이타가 얼마나 들어왔는지 알아내는 방법 없나요?
Forums:
읽은 바이트 수는
읽은 바이트 수는 bytes_read에 저장됩니다.
매번 malloc/free하는 것은 엄청난 overhead입니다.
-----
오늘 나의 취미는 끝없는, 끝없는 인내다. 1973 法頂
-----
오늘 나의 취미는 끝없는, 끝없는 인내다. 1973 法頂
msg header
msg type과 size정도를 가지는 msg header를 따로 만드시고,
header를 먼저 읽은 후, header.size 만큼 메모리를 할당 하신 후,
read를 하면 됩니다. 물론 header는 정적으로 정해두는 편이 좋겠죠.
I thought what I'd do was,
I'd pretend I was one of those deaf-mutes.. or should I?
댓글 달기