udp 방식으로 개발하는 사람이 잘 없지 않나요
소켓 프로그래밍 중에서 udp 개발이 가장 앵간한 이유가 머나요.
일반적으로 send, recv 함수를 사용하는데 연결 지향을 사용하지 않는다 이럼 sendto recvfrom 이런 함수를 사용하고 1:N 연결을 하겠쩌. recv 함수로 한다면 확장 기능으로 소스 엔드포인트를 가져와야 하는데 이렇게 하면 루프에서 오버헤드가 앵간하게 생길 것이어요. 해시테이블 조회에 큰 비용이 나가요.
recvfrom 함수를 걸어서 정해진 엔드포인트에서 수신한다 하더라도 .. 특정한 소스 엔드포인트가 약속 없이 이탈하면 대기중인 태스크가 영구적으로 블록되어요. 응답시간 초과에 대하여 예외도 되어야 하는데 핑-퐁은 원래 옵션으로 하려고 하였는데 .. 구조체에 플래그 필드가 없어서 망했어요. 플래그 필드를 넣으면 최소 1바이트를 더 써야 하여서 싫 ..

전에 네오플에 어느 온라인게임이 udp p2p 방식으로 클라연동을 하였는데 유저들이 핑이 튄다고 난리였쩌. 이러다가 한번 갈아엎은 적이 있는데 솔까 이거는 애초에 네트워크에 대해서 낮은 이해도가 원인이지 않았겠나요. 특정 클라이언트가 호스트로 작동 한 것 같은데(애가 팅기면 찰나에 프레임 드랍이 있었쩌) p2p 통신을 이케 만들면 망해요. p2p 통신 과정은 중심이 되는 네트워크가 없어야 하고 완전하게 별처럼 되어야 헤요.
(이렇고 이러면서 데이터 합의 알고리즘이 없어가지고 핵쟁이가 난무하였지 않았나요. 일단 팔아야 하여서 제끼고 하였 ..)
소켓 recvfrom 함수에 수신되는 반환 데이터 크기는 -1 0 어떠한 값 상태에 대하여 종료되었다고 처리할까
소켓의 recvfrom() 함수는 수신된 데이터의 양을 나타내는 정수 값을 반환합니다. 반환 값에 따라 다음과 같은 상태를 확인할 수 있습니다:
1. n 바이트: 성공적으로 n 바이트의 데이터를 수신했습니다. 여기서 n은 0보다 크거나 같습니다.
2. 0: 클라이언트가 close() 함수를 호출하여 연결을 종료했습니다.
3. -1: 오류가 발생했습니다. 이 경우, WSAGetLastError() 함수를 사용하여 오류 코드를 확인할 수 있습니다.
따라서, recvfrom() 함수가 -1을 반환하면 오류가 발생한 것으로 간주해야 합니다. 이는 네트워크 오류, 리소스 부족, 내부 오류 등 다양한 이유로 발생할 수 있습니다. 오류가 발생한 경우, 적절한 오류 처리 및 로깅을 수행하여 문제를 해결해야 합니다.
표준 소켓 함수는 플랫폼 공통이 아니었는지, ai는 윈도우api 기준으로 알려주는데 편향 .. 전에 이루다ai가 지나친 편향으로 망했쩌.
