게시글
고민있어요
2022.08.17 21:08
강의 14분경 배치파일을 맥에서 이용하기
- 1
- 1
- 479
고민있어요
2022.07.29 18:45
Mac에서 Socket.AcceptAsync 사용시 멈추는 문제 및 해결방법
- 3
- 1
- 294
질문&답변
2022.07.29
리스너 코드 무반응
굉장히 늦은 답변이지만 저도 mac환경에서 동일 현상을 겪었습니다 그냥 진행하면 client의 recv에서 멈춰서 대기하면서 netstat으로 확인하면 클라이언트는 서버에 연결되어있다고 하지만 서버는 클라이언트를 받아오지 못하고 있더라구요. Completed 이벤트 발생도 되지 않구요. 따라서 OnAcceptCompleted 함수가 실행되지 않고 있었습니다. 디버깅 모드로 AcceptAsync에 중단점을 찍으면 Blocking이 true인 상태로 AcceptAsync는 false를 반환하면서 강제로 OnAcceptComplited 함수가 실행되어 client와 server가 통신하구요. client를 sleep시켜도 보고 구글링을 해보고 스택오버플로우에서 찾아본 방법으로도 해결이 안 되길 며칠... 우연히 AcceptAsync 정보를 가져와볼 심산으로 Server의 Program 파일에서 _listener.Init 이후 잠깐 sleep을 걸었더니 잘 소통하네요... 이후 반복 테스트에서 모두 성공했습니다. 정확한 원인은 모르겠지만... 여튼 문제 해결은 되었습니다 Server가 잠깐 sleep해야한다는게 client와의 통신 상에 성능 저하가 발생할 수밖에 없을 것 같아 찝찝하기에 원인을 더 고민해볼 계획입니다 + 가끔가다 중간에 멈추는 경우가 있었습니다. while문 앞의 Thread.Sleep()에서 sleep 시간이 짧을수록 더 잘 멈추더라구요 고민하다 while문 안에서 sleep를 선언하니 만큼만 sleep를 설정하여도 멈춤 없이 작동합니다 심증적으로는 mac의 정책이나 mac용 VS의 문제로 while문이 도는 동안 이벤트 발생을 못하고 있다는 것인데... 정확한 이유는 저도 잘 모르겠네요 ㅠ 일단 작동을 하니 다음으로 넘어가야겠습니다... 만으로 하루를 매달렸는데 막상 일단 작동하는 이유를 보니 허탈하기도 하네요; 다른 분들도 도움이 되길 바라며 남겨봅니다
- 0
- 10
- 338