파이톨치

[IoT] 끄적끄적 본문

카테고리 없음

[IoT] 끄적끄적

파이톨치 2024. 4. 4. 18:22
728x90

# 4/4

 

에코 클라이언트 해결책 

 

read를 파일 루프로 바꿔준다.

write 했을 때, 몇 바이트? 

 

디먹싱? 멀티플렉싱? 

** 서버의 경우 os가 알아서 자동으로 서버 소켓 ip, port 할당해줌. **

 

멀티 캐스트? 이게 뭐지, 멀티 캐스트에 들어온 메시지로 포워딩하는거임. 배웠던가? UDP 내용,

 

브로드 캐스트? 모든 애한테 동일한 네부워크 내에 모든 호스트한테 다 보내. UDP 소켓 기반.

호스트 주소를 모두 1로 전송하면 해당 네트워크로 데이터 전송.xx.xx.xx.255 

255.255.255.255 -> 로컬 브로드 ㅐ크스, 데이터 선송 전송 호스타가 속한 네크워크로 데이터 전송

외부의 섭셋에 대해 사용할 경우 디렉티드 모드 사용한다. 모든 호스트가 reply하면 받는다. 외부로 할 때 디렉트드만 가능 로컬 안 됨. 로컬은 트래픽 높아. 가능하려면 소켓 옵션 설정해야 한다. setsockopt함수로

 

sender 관점 소켓 생성하고 주소를 세팅한다. 인자로 주어진 주소를 inet_addr로 변환한다. 소켓 옵션에서 브로드 캐스팅용 소켓으로 사용한다. 일반적인 udp와 큰 차이없음.

리시버 관점에서는 소켓을 열어 bind로 주소 설정한다. INADDR_ANY 모든 거 다 받는다. recvfrom은 5번째 필드가 주소 필드가 와야 하는데, null 설정된다. 리스비 프롬이 성공적으로 수행되면, clnt_adr을 받아온다. 그러고 난 뒤에 sendto로 보낸다. 근데 여기서는 null을 써주는데, 사용하는데가 없으니까 그냥 널값으로 채운다. tcp는 connect가 직접 연결을 하는건데, udp에서는 소켓의 주소만 세팅하는 기능만 한다. 연결 기반이 아님. tcp하듯이 사용 가능? 윈도우는. 뭐야 헷갈리는데

 

udp 기반 에코 소켓 프로그램 구조 및 동작 이해

서버 코드 외부에서 cntr c로 강제 종료 해야한다.

connected 함수를 안 쓴ㄴ데 주소 설정 안 해도 됨. memset, serv_adr.sin … 이거 필요업승ㅁ. 

connected udp ech에서 write쓰기 위해서는 주소 설정해줘야 함.

mulicasting기반 채팅 프로그램? 

728x90