accept 함수에 대한 문의
292
작성한 질문수 1
accept 함수부분 설명에서 두번째와 세번째 파라미터에 NULL을 준다고 하셨는데, 왜 NULL을 주는 건지? bind함수처럼 지정하면 안되는지 궁금합니다.
답변 1
0
두번째/세번째 파라미터(child socket address/length) 지정하셔도 됩니다!! 제가 준비한 예제에서 사용하지 않았을 뿐입니다.
소켓은 종단(endpoint)간의 연결 입니다. 그래서 양 끝 socket에 자신의 address가 있죠. 이 address가 소켓 통신에서 나와 상대방의 identification이 되는 것이죠. server는 반드시 자신의 address를 bind 해야 합니다. 그래야 client가 server로 접속할 수 있겠죠. 반면 client는 자신의 address를 bind 해도 되고, 하지 않아도 됩니다. 프로그램에서 명시적으로 설정하지 않았다면 커널이 자동(임의 설정)으로 해주기 때문이죠. 제가 준비한 예제에서는 client socket에 address를 명시적으로 설정하지 않습니다. 커널에게 맡긴 것이죠.
그렇기 때문에 server에서 accept() 할 때 client의 address를 받아오는 두번째/세번째 파라미터를 NULL로 입력한 것입니다. 받아와봐야 의미 없는 값(커널이 임의 설정한 값)이 나오기 때문입니다.
예제를 수정하여 client socket에 address를 bind하고, server에서는 accept 시 child address를 받아오게 한다면 정상 동작할 것입니다. unix domain socket에서 child socket에 address를 지정해 연결하는 예제는 아래 링크를 참조해주세요
https://www.ibm.com/support/knowledgecenter/en/SSB23S_1.1.0.14/gtpc1/unixsock.html
좋은 질문 감사합니다~ :D
fork() 후 address
0
40
2
bind(): Address already in use
0
58
2
POSIX named semaphore 자원이 제대로 해지되지 못한 상태로 프로세스가 종료됐을 때 해당 semaphore 재사용 방법
0
215
2
강의 순서
0
262
1
강의자료 질문
0
243
1
수업 관련 질문
0
354
3
안녕하세요! 메세지 큐 방식에 대해 질문있습니다.
0
268
1
리눅스는 디버깅이 없나요?
1
722
1
fcntl 에서 Read/Write 기능
1
354
1
시스템 프로그래밍 향후 공부
1
506
1
Shared Memory와 동기화 관련
1
1181
1
거의 모든 함수를 static 선언하시는 이유는 무엇인가요?
1
2326
1
SHM_REMAP
1
317
2
recvfrom 질문
1
715
6
컴파일 질문입니다
1
675
1
partial send/recv에 관하여
1
670
1
스레드끼리의 통신에도 적용가능한가요?
1
374
1
File Lock API - 정리 table에서 multi-thread 사용가능시....
1
412
1
WSL Ubuntu에서 메시지 큐
1
464
1
shared memory(14강) live programming file mapping 에 관한 질문입니다.
1
203
1
에러 - bind(): Address already in use
1
1137
1
POSIX MQ의 설정 문의
1
602
2
datagram socket 구현시 recvfrom에서 블록킹됩니다.
1
1505
1
counting semaphore에 대해서 질문이 있습니다
0
305
3





