2017-10-31 1 views
-1

나는 UDP protcol 구현을위한 코드를 작성하는데,이 파일을 1024 바이트의 청크로 분할해야합니다. 그런 다음 각 패킷의 체크섬을 계산하고 시퀀스 번호를 입력하여 헤더 정보로 추가 한 다음 패킷을 수신기로 보냅니다. 나는 파일을 청크로 만들고 체크섬을 계산하는 것을 안다. 하지만 헤더 정보와 데이터 패킷을 연결하려면 memcat을 사용해야합니까? 누구든지 C에서 어떻게 할 수 있습니까?C에서 UDP를 기반으로하는 소켓 프로그래밍

+0

조금 더 자세한 정보를 제공 할 수 있습니까? 너 지금까지 한 짓처럼? 어떤 것이 있으면 코드를 넣는 것이 더 낫다. – MaMadLord

+0

'sendmsg'를 사용하여 복사를 피하기 위해 별도의 버퍼에서 헤더와 패킷 데이터를 수집 할 수있다. –

답변

0

파일에서 1024 바이트 청크 파일을로드 할 때 약간 더 큰 버퍼/어레이 (예 : char[1024+4+4], 즉 1032 바이트)로로드하십시오. 그런 다음 버퍼에 8 바이트의 여분의 공간을 확보하여 버퍼를 보내기 전에 시퀀스 번호와 체크섬을 쓸 수 있습니다.

1024 바이트의 데이터 다음에 시퀀스 번호와 체크섬을 쓰거나 버퍼의 시작 후 8 바이트 위치의 데이터에 fread()을 메모 리 위치에 쓴 다음 맨 위에 시퀀스 번호와 체크섬을 쓸 수 있습니다 버퍼 (즉, 방금로드 된 데이터가 시작되기 전의 공간). 두 가지 방법 모두 조금 더 생각하기 쉽지만 어느 쪽이든 괜찮습니다 (송신자와 수신자가 레이아웃에 동의하는 한).

관련 문제