inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

리눅스 IPC 프로그래밍 - 이론과 실습

- Live Programming(Datagram Socket)

데이터 송수신 함수에 대한 질문입니다

해결된 질문

225

젓인

작성한 질문수 158

0

결국 소켓도 하나의 fd니까 read, write로 sendto와 recvfrom을 대체할 수 있다고 생각해서 찾아봤는데 서버 연결 유무에 따라서 사용할 수 있고 없고가 결정된다고 나와있습니다.

즉 TCP는 서버가 연결되어있기 때문에 write, read를 사용할 수 있고, UDP는 아니라고 되어있는데

서버 연결과 read, write에 대해 자세히 설명해주실 수 있나요?

linux

답변 2

0

젓인

오 이해했습니다~

0

런잇(ProgCoach4U)

이해하신 부분이 맞습니다. 연결이 되어 있는 소켓에 대해서는 read/write 사용이 가능하고, 연결이 되어 있지 않은 소켓에 대해서는 read/write 사용이 불가능 합니다. 

소켓의 상태와 API의 형태를 생각해보시면 이해하시기 쉬울 것 같아요. 소켓을 연결하고 사용하는 경우(예: TCP)에는 이미 연결되어 있으므로 송수신 시 대상 소켓에 대한 명세를 할 필요가 없죠. 그렇기 때문에 send/recv/write/read 계열의 API 사용이 가능합니다. 소켓을 연결해놓고 사용하지 않는 경우(예: UDP)에는 송수신 시 대상 소켓에 대한 명세를 해야 합니다. 그래야 커널이 해당 메시지를 어디로 보낼지 알 수 있겠죠? 이런 경우 sendto/recvfrom이 사용될 수 있습니다.

이해가 되셨을지 모르겠네요. 또 다른 질문 있으시면 추가 문의 남겨주세요~

fork() 후 address

0

40

2

bind(): Address already in use

0

59

2

POSIX named semaphore 자원이 제대로 해지되지 못한 상태로 프로세스가 종료됐을 때 해당 semaphore 재사용 방법

0

216

2

강의 순서

0

262

1

강의자료 질문

0

244

1

수업 관련 질문

0

354

3

안녕하세요! 메세지 큐 방식에 대해 질문있습니다.

0

268

1

리눅스는 디버깅이 없나요?

1

722

1

fcntl 에서 Read/Write 기능

1

354

1

시스템 프로그래밍 향후 공부

1

507

1

Shared Memory와 동기화 관련

1

1182

1

거의 모든 함수를 static 선언하시는 이유는 무엇인가요?

1

2328

1

SHM_REMAP

1

318

2

recvfrom 질문

1

715

6

컴파일 질문입니다

1

675

1

partial send/recv에 관하여

1

670

1

스레드끼리의 통신에도 적용가능한가요?

1

375

1

File Lock API - 정리 table에서 multi-thread 사용가능시....

1

412

1

WSL Ubuntu에서 메시지 큐

1

464

1

shared memory(14강) live programming file mapping 에 관한 질문입니다.

1

205

1

에러 - bind(): Address already in use

1

1138

1

POSIX MQ의 설정 문의

1

604

2

accept 함수에 대한 문의

1

295

1

datagram socket 구현시 recvfrom에서 블록킹됩니다.

1

1507

1