2009-06-15 4 views
1

C (유니 캐스트)로 UDP 소켓 클라이언트를 만들고 있는데, recvfrom()에 sockaddr * 인수가있는 이유가 궁금합니다. null 포인터이거나 sockaddr 구조체를 가리키는 곳입니다. 주소가 저장됩니다.UDP (유니 캐스트 클라이언트)는 sendto() 이외의 다른 서버를 recvfrom() 할 수 있습니까?

내가 보낸 메일 이외의 다른 서버에서 메시지를받을 수 있습니까? 그렇다면이 시나리오를 만드는 방법은 무엇입니까?

아니요,이 인수는 브로드 캐스트 모드를 사용할 때만 유용하다고 말할 수 있습니까?

답변

2

예, 가능합니다. 그 이유는 UDP가 스트림 기반이 아니라 패킷 기반이기 때문입니다. 모든 패킷은 기록없이 처리됩니다 (다른 패킷을 보내거나 받음).

UDP 포트를 열고 다른 호스트로 패킷을 보낼 수도 있습니다. 그러나 API에서 이것이 얼마나 잘 지원되는지는 잘 기억하지 못합니다.

-1

항상 UDP에서 두 개의 파티가 있다고 생각하면 누군가가 먼저 recvfrom()을 먼저 수행해야한다는 것이 분명한 것 같습니다.

0

UDP 소켓은 올바른 포트 이것에 보내는 모든 호스트를 recvfrom() 것 그냥 write()read(), 수신 ICMP 메시지에 따라 오류가 발생할 수있는 경우에 당신이 명시 적으로 connect(),하지 않는 한.

관련 문제