recv() 호출은 패킷의 데이터를 가로채는가 또는 타임 스탬프가있는 데이터 패킷을 얻을 수 있습니까?TCP 클라이언트에서 패킷으로 데이터 받기
답변
Recv는 성공적으로 수신 된 소켓에서 데이터를 가져옵니다. 그 일이 언제 일어 났는지 알려주지 않습니다. 즉 타임 스탬프가 없다.
시도한 솔루션 대신 해결하려는 문제 ("필요한 이유")를 자세히 설명 하시겠습니까? (또는 완전히 질문을 오해 한 적이 있습니까?)
데이터 그램 소켓 (예 : UDP)에서 recv
은 데이터 그램으로 데이터를 가져옵니다. 그러나 TCP는 스트림 모드 소켓이며 recv
은 패킷을 고려하지 않고 바이트 콜렉션을 가져옵니다.
낮은 수준의 API를 사용하여 패킷을 가져올 수는 있지만 send
사이의 경계를보고 싶다면 패킷에 정보가 없습니다.
메시지가 동시에 전송 된 경우 단일 패킷으로 전송되기 때문에? – user3234
@user : Nagle은 나가는 데이터를 결합 할 수 있습니다. 대형 버퍼는 여러 패킷으로 분리 될 수 있고 패킷은 MTU 제한으로 인해 조각화 될 수 있으며 프록시는 데이터를 다시 버퍼 할 수 있습니다. Nagle이 비활성화 된 경우에도 재전송이 발생하면 (그러면 TCP가 대역폭을 관리하는 방식이기 때문에) 최대한 많은 데이터가 패킷에 압축됩니다. –
데이터를 수신하는 원격 컴퓨터에 자신의 코드가 데이터를 보내는 경우 ... 타임 스탬프를 보낸 후 데이터를 보내는 것과 같이 자신의 응용 프로그램 수준 데이터 형식을 만들 수 있습니다 (특정 숫자 바이트).
이 정보는 수신 측에서 추출 할 수 있습니다. 언급 된 연결이 TCP이기 때문에 ... 데이터는 UDP의 경우처럼 완전한 패킷이 아닌 스트림 형식입니다.
- 1. 클라이언트에서 클레임 받기
- 2. 파이썬 TCP 클라이언트에서 클라이언트로 메시지 전달
- 3. 안드로이드 장치에서 실행중인 클라이언트에서 tcp 서버에 연결
- 4. C 포트를 사용하여 TCP 연결에서 메시지 받기 #
- 5. tcp 포트에서 데이터 수신
- 6. postgresql tcp 데이터 압축
- 7. tcp/ip를 사용하여 C#에서 클라이언트에서 서버로 명령 보내기
- 8. 브라우저/클라이언트에서 JSON 데이터 필터링
- 9. C# 클라이언트에서 DLL로 데이터 전달
- 10. Sinatra로 헤더 데이터 받기
- 11. C# 패킷 데이터 받기
- 12. WinPCap 데이터 잘림 받기
- 13. 오디오 버퍼 데이터 받기
- 14. TCP 세그먼트가 어떻게 분할 되었습니까?
- 15. 클라이언트에서 node.js/socket.io를 통해 tcp 서버에 연결하는 방법은 무엇입니까?
- 16. Delphi의 Indy 클라이언트에서 TCP RST를 보낼 수 있습니까?
- 17. 테이블 데이터베이스에 tcp 데이터 저장
- 18. TCP 단편화
- 19. Ajax - 별도의 데이터 라인 받기
- 20. Java MMO로 클라이언트에 데이터 받기
- 21. XML 데이터 보내기 및 받기
- 22. ITAPI3 데이터 보내기 및 받기
- 23. 빈 데이터 보고서 받기 vb6
- 24. TV Listings/가이드 데이터 받기
- 25. 클라이언트 컴퓨터에서 보낸 데이터 받기
- 26. EDG, C++ friend 데이터 받기
- 27. 매 초 여러 클라이언트에서 소켓 당 데이터 전송
- 28. 신뢰할 수없는 클라이언트에서 Java 런타임 데이터 보안
- 29. Windows에서 TCP 보내기 및 받기 큐 크기를 보려면 어떻게합니까?
- 30. WCF 클라이언트에서 WCF 서비스와 동일한 데이터 형식을 사용하는 방법
recv가 서버에서 보낸 IP 패킷 형태로 데이터를 가져올 수 있는지 궁금하지만 대신 동일한 버퍼에서 가능한 한 많이 얻는 것처럼 보입니까? – user3234
질문이 명확하지 않습니다. 원시 IP 헤더에 액세스하려고합니까? 당신은'recv()'로 그렇게 할 수 없으며 완전한 IP 패킷 자체가 아닌 IP 패킷 내부로부터 데이터 페이로드만을 반환합니다. –
@ user3234 : 예, recv는 개별 IP 패킷이 아닌 스트림으로 표시된 페이로드 데이터를 가져옵니다. (또는 데이터 그램 소켓에 대한 단일 메시지/패킷이지만 TCP를 지정했습니다.) 예를 들어 데이터가 잘못 수신 된 경우에도 시스템에서 적절하게 주문하고 recv는 항상 "다음"데이터를 가져옵니다. –