2016-12-06 6 views
-1

sendto에서 : 내가 보내는 소켓의 소켓 기술자가이 통화에서주소에서 소켓 설명자 가져 오기?

ssize_t sendto(int sockfd, const void *buf, size_t len, int flags, 
       const struct sockaddr *dest_addr, socklen_t addrlen); 

, 그것은 불가능합니다 const struct sockaddr *dest_addr

답변

1

호에서 수신기의 소켓 기술자를 얻을 수있는 방법이있다. 검색을 요청한 소켓 디스크립터는 완전히 다른 머신에서 실행중인 다른 프로세스에있을 수있는 모든 수신기의 소켓 디스크립터이다.

또한, 나는 그 소켓 디스크립터를 얻음으로써 얻을 수있는 것에 관해서는 이유를 생각할 수 없다.

+0

발신자와 수신자의 정보를 UDP 통신에 매핑하는 이유는 다음과 같습니다. – Bionix1441

+2

보낸 사람과받는 사람 사이에 정보를 매핑하려면 소켓 설명자,받는 사람 주소 및 포트를 보내는 세 개의 튜플을 사용할 수 있습니다. 그걸로 충분할거야 .. 맞지? – Jay

+2

어쨌든, 당신은 수신자의 소켓 디스크립터를 얻는 아이디어를 포기해야한다. 그것은 다른 프로세스에서 왔고 전혀 다른 의미를 가질 수있다. Ex의 경우 : 프로세스가 UDP 데이터 그램을 2 개의 프로세스로 전송하고 둘 다 소켓 설명자 값을 10으로받는다면 (예제) 여전히 매핑이 작동하지 않습니다. 맞습니까? – Jay

1

당신이 요구하는 것은 공식적으로 의미가 없습니다.

  1. 수신자의 소켓 설명자가 수신 과정에 있습니다. 전송 프로세스에서는 사용할 수 없으며 사용 중이 지 않은 경우에도 수신 프로세스에서 그 값만 의미가 있으므로 사용하지 않아도됩니다.

  2. UDP IP 주소 : 포트가 단일 소켓에 매핑되지 않을 수 있습니다.