예제 소스 분석하고있는데
그냥 1:1 클라이언트-서버 단순한 메세지 주고받기 소스거든
근데 보니까
socket 생성하고 bind, listen만 while루프 외부로직으로 구현되어있고
accept, recv, send 함수는 전부 루프내에서 처리하네??
accpet는 최초 한번만 호출하는거 아니었냐? 패킷 송수신 할때마다 호출해줘야함?
예제 소스 분석하고있는데
그냥 1:1 클라이언트-서버 단순한 메세지 주고받기 소스거든
근데 보니까
socket 생성하고 bind, listen만 while루프 외부로직으로 구현되어있고
accept, recv, send 함수는 전부 루프내에서 처리하네??
accpet는 최초 한번만 호출하는거 아니었냐? 패킷 송수신 할때마다 호출해줘야함?
접속이 안끊기면 상관없음.
한클라당 한번만 호출하면 됨.
여러번 호출해도 상관없는거냐? 1:1 접속 말고 다대일로도(select 써서) 구현해야 하는데
메시지 한 개만 싸지르고 바로 끊는 일회성 연결인가 보지. accept로 다음 접속자 대기타는 걸테고...
아 마지막에 클로즈하네..
ㅋㅋㅋㅋㅋ 어느책임?
accpet 처리하는 쓰레드를 따로 만드셈. 어차피 accpet 자체도 블럭킹 함수아님?
앜ㅋㅋㅋㅋㅋㅋ 접속자 하나 당 스레드 한 개로 해서 구현하면 살인적인 오버헤드 잼. 그냥 select나 Window Message 같은 비동기 이벤트 처리 방식을 써야지...
멀티 스레드로 구현할 수도 있겠지만 스레드 풀로 구현해야 하는데 좀 귀찮을 듯
책이 아니라 걍 과제 소스임ㅋㅋㅋㅋ 시발 오랜만에 C 잡으니까 미치겟다
멀티쓰레드는 자바로밖에 안만들어봤다능
그냥 간단하게 하면 그렇다는거임ㅋㅋ
클라측 소스 보면 connect()는 한번만 호출하고 while루프 들어가버리는데 서버측은 accept를 계속 호출하네? 이러면 accept 호출할때마다 블록되는게 정상아님? 왜 잘되지..