에 (무효 *)에서 제거 내가이 꽤 똑바로 앞으로 문제라고 생각하지만, 난 여전히 그것을 알아낼 수 없습니다.앞에 추가 및 C
내가 네트워크를 통해 스트림을 보내는 기능을 가지고있다. 당연히, 이것은 인자로 const를 무효 *를 취합니다
void network_send(const void* data, long data_length)
내가 소켓을 통해 그것을 전송하기 전에 이것의 char *의 형태로 특정 헤더를 앞에 추가하려고 :
long sent_size = strlen(header)+data_length;
data_to_send = malloc(sent_size);
memcpy(data_to_send,header,strlen(header)); /*first copy the header*/
memcpy((char*)data_to_send+strlen(header),data,dat_length); /*now copy the actual data*/
이 작품 데이터가 실제로 char * 인 한 괜찮습니다. 그러나 다른 데이터 유형으로 변경되면 작업이 중지됩니다. 수신시
는 그것을 처리하기 전에 데이터로부터 헤더를 제거해야한다. 그래서 이것은 그것을하는 방법입니다 :
void network_data_received(const void* data, long data_length)
{
........
memmove(data_from_network,(char*)data_from_network + strlen(header),data_length); /*move the data to the beginning of the array*/
ProcessFurther(data_from_network ,data_length - strlen(header)) /*data_length - strlen(header) causes the function ProcessFurther to read only certain part of the array*/
}
이것은 데이터가 char 유형이라면 다시 작동합니다. 다른 유형이라면 충돌이 발생합니다.
누구나 올바르게 구현할 수있는 방법을 제안 할 수 있습니까?
안부, 칸
어떻게 이러한 함수를 호출합니까? 코드를 제공 할 수 있습니까? – detunized
당신은'strlen'을 사용하여 data_length를 계산하지 않습니까? 정말 헤더에 맞는 기능입니까? – Rup
문제는 (char *) data_to_send + strlen (header) –