최근에 winsock API를 사용하여 작업 한 결과 보낸 사람의 버퍼 크기를 늘리고 사용되지 않은 바이트를 0으로 채우는 경우 수신자는 파일 끝에 해당 0을 추가한다는 것을 발견했습니다. 내가 사용하는 응용 프로그램 버퍼가 더 많다면, 다른 끝에서받는 파일이 손상된 것처럼 보이고 0을 추가하기 때문에 명백 해 보인다. 그러나 그것은 2048, 1024의 버퍼로 잘 작동했으며,이 경우에는 보내기 전에 0이 너무 추가되었습니다. 어떻게 한 사람이 타락하고 다른 사람이 아닌가?Winsock TCP 응용 프로그램 버퍼
0
A
답변
1
송신자의 버퍼 크기를 늘리고 사용되지 않은 바이트를 0으로 채우면 수신자는 파일 끝에 해당 0을 추가합니다.
따라서 바이트는 전혀 사용되지 않았습니다. 너는 그들을 보냈다. send 함수 호출에서 잘못된 개수를 사용했습니다.
내가 사용하는 응용 프로그램 버퍼가 더 많으면 3072에 다른 끝에서받는 파일이 손상된 것으로 보이며 0을 추가하기 때문에 명백해 보입니다.
수정.
그러나 2048, 1024 버퍼로 정상적으로 작동하고 이러한 경우 송신하기 전에 0이 너무 추가되었습니다. 어떻게 한 사람이 타락하고 다른 사람이 아닌가?
코드에 더 큰 버퍼 크기로만 노출 된 버그가 있기 때문에. 아마 당신이 보낸 파일은 2048 바이트의 배수이므로 파일 끝 버그는 노출되지 않았습니다.
코드를 보지 않고는 확신 할 수 없지만 파일에서 읽고 'count'바이트를 보내는 대신 전체 버퍼를 보낼 때 반환되는 카운트는 무시할 가능성이 큽니다. 이것은 파일의 끝에서 실패하지만 읽지 않은 다른 시간에는 실패 할 수도 있습니다. 그렇지 않은 경우 버퍼를 채우지 않습니다.
관련 문제
- 1. 멀티미디어 응용 프로그램 용 버퍼로 TCP 수신 버퍼 사용
- 2. winsock 프로그램
- 3. TCP 버퍼 사용량
- 4. TCP 연결 용 버퍼
- 5. TCP 패킷 버퍼 읽기
- 6. C# TCP 서버 버퍼
- 7. VB6 WinSock TCP 클라이언트 및 .NET TCP 서버
- 8. 서버/클라이언트 TCP 비동기 (winsock) // FD_WRITE 문제
- 9. TCP Winsock : 여러 연결/클라이언트 허용
- 10. winsock api를 사용하여 동시에 열린 tcp 연결
- 11. Winsock TCP recv()가 5 초 동안 응답합니다.
- 12. TCP 응용 프로그램 및 UDP 응용 프로그램 연결
- 13. AX22xx 용 TCP 응용 프로그램 작성 방법
- 14. 클라이언트 서버 tcp/ip 대화방 응용 프로그램
- 15. TCP/IP로 P2P 응용 프로그램 만들기?
- 16. 자바 EOFException 서버/클라이언트 TCP 응용 프로그램
- 17. Rails 응용 프로그램 외에도 TCP 서버를 실행해야합니다.
- 18. Tcp 클라이언트 서버 양식 응용 프로그램 문제
- 19. TCP 서버 C#의 XAML 응용 프로그램
- 20. C++ 게임 응용 프로그램 UDP와 TCP
- 21. Dotcloud www와 TCP 단일 응용 프로그램 -
- 22. Verifone 응용 프로그램 TCP/IP를 통한 다운로드
- 23. 이벤트 기반 tcp 응용 프로그램 테스트
- 24. C# TCP 채팅 응용 프로그램 스레딩
- 25. 소켓 tcp C# 입력 버퍼 지우기 방법?
- 26. IIS 호스팅 WCF 서비스가 TCP 포트 "불충분 한 winsock 리소스"
- 27. Winsock DLL을 사용하여 간단한 TCP 에코 서버에서 메시지 분리
- 28. C# 응용 프로그램 vb6 응용 프로그램과 통신
- 29. 버퍼를 보내는 TCP 소켓 프로그램.
- 30. winsock, 메시지 지향 네트워킹, 그리고 recv에서 버퍼 캐스팅하기