문제

이 라인을 사용하여 루비 (1.8.7) 소켓을 통해 메시지를 보내고 있습니다.

@@socket.send login_message, 0

(이것은 잘 작동합니다)

두 번째 매개 변수는 무엇입니까? Ruby API 문서에서 보내기 메소드를 찾을 수 없습니다 ...

나는 그것이 메시지의 c 스타일 길이라고 생각했다. 이것이 내가 Login_Message.Length를 두 번째 매개 변수로 사용한 이유입니다. 그것은 효과가 있었지만 나는 이상한 행동을 만났습니다.

두 번째 매개 변수가 홀수 인 경우 모든 것이 잘 작동합니다. 짝수 인 경우 마지막 문자는 다른 쪽에서 수신 할 때 손실됩니다 (다른 쪽은 C 소켓이있는 C ++ 프로그램입니다). 나는 Wireshark로 네트워크 트래픽을 검사하고 패킷이 좋아 보인다는 것을 알았습니다. 모든 데이터가 완료되었습니다. 내가 그것을받을 때 마지막 캐릭터가 잃어버린 이유는 무엇입니까?

Lennart 감사합니다

도움이 되었습니까?

해결책

이것은 플래그 매개 변수입니다. send() 시스템 호출. 일반적으로 0 여야하지만 같은 것일 수 있습니다. Socket::MSG_OOB (대역 외 데이터 전송). 루비 1.9의 경우 이것은 아래에 문서화되어 있습니다 기본 사항.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top