C 소켓프로그램에서.. 출발지 주소를 어떻게 가져오나요?

select99의 이미지

C 소켓프로그램에서..

서버측에서 소켓연결될때 출발지 주소를 어떻게 가져오나요?

익명 사용자의 이미지

accept system call의 두번째 인자로 들어가는 sock_addr에 들어있습니다.

노랑망토의 이미지

TCP의 경우는 윗분의 말씀대로 accept 함수의 두번째 인자를 통해 알 수 있고
UDP의 경우에는 recvfrom 함수의 네번째 인자를 통해 알 수 있습니다.

참고로 함수들의 프로토타입을 적어보면
int accept(int socket, struct sockaddr *clientAddress, unsigned int *addressLength)
int recvfrom(int socket, void *msg, unsigned int msgLength, int flags, struct sockaddr *srcAddr, unsigned int *addrLen)
입니다.