작성
·
64
·
수정됨
0
24.10.29 수정 맨 밑에 해결 방안 적어놨습니다.
저처럼 고생하는 사람 없기를 바랍니다.
24.10.24?
socket 이 null인데요.
해당 호출스택입니다
socket = null
조사식 캡처본입니다.
이전 강의에서도 처음 실행했을 때 네트워크 허용 관련 창이 떴었는데 빠르게 누르면서 뭘 눌렀는지 모를정도로 가볍게 생각하고 넘어갔는데 계속 이런 상황이라 디버깅이 어렵네요.
다른 질문에도 Unhandled Exception 나온 분꺼도 읽었는데 일단 기본 테스트니까 넘어가라고 하셔서 했는데도 계속 뜨더라고요.. 4강 강의는 계속 이렇게 무시하고 진행해야 할까요?
구글링했을 때 제가 네트워크 허용안한거 같은데 다시 허용 뜨게 하는방법도 모르겠고, 조언 부탁드립니다 ㅠㅠ
4번의 호출스택에서 _args.ConnectSocekt이 null 입니다.
_args는 null이 아니고, SocketError는 success로 넘어옵니다.
그리고 네트워크 허용 창 같은 경우 방화벽을 다 해제하고도 진행해 봤었는데 그대로이며,
방화벽 다 해제하고, 다시 진행하니까 Sever를 허용 하시겠냐고 창이 떠서 이번에는 허용을 눌렀는데도 그대로입니다..
디버깅 모드 하지 않고 실행하면
이러고 끝입니다.
Socket Error 조사식.
This protocol version is not supported.
저는 작업한것들을 강의마다 git으로 올려두고 있는데 혹시나하고 Session3 26강까지는 정상작동했다가
Session#4 27강에 해당 에러를 발견하게 됐습니다. 이전에 이런 에러가 없었는데.. 원인을 계속 찾아볼게요
구글링과 gpt를 통해서 찾아봤습니다.
우선 연결할 port(7777)가 없는 것을 확인.
방화벽에서 차단하고 있는지 체크.
인바운드 규칙으로 포트 추가.
로컬 Ip를 직접 연결하고, TcpListner를 직접 Start 호출.
코드문제 1. Close 매개변수를 사용하지 않았습니다. 강의 따라가다가 놓친것 같네요..
코드문제 2. _reserveSize == FreeSzie 같으면 null 일때 문제.
현재 Open
메서드에서 _reserveSize
가 FreeSize
와 같을 때 null을 반환하도록 되어 있습니다.
이 경우 OnConnected
메서드에서 Array.Copy
를 호출할 때 openSegment.Array
가 null이 되어
ArgumentNullException
이 발생할 수 있습니다.
이런식입니다.
그러다 멀티쓰레드를 사용하면 시간이 안맞아서 그럴 수 있다고 하더라고요
기존 IPAddress ipAddr을 원복시키고,
Thread.Sleep으로 5초 늦게 연결을 하니까
다른 도움이 필요하시면 ChatGPT에 기다려달라고하고 class 전체 복사해서 하나씩 읽게 한 다음에,
문제되는 점을 찾거나 에러 관련 질문을 넣으면 적지않게 도움을 받을 수 있을겁니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
전하늘 님의 질문에 대해 유사한 기존의 질문 및 답변들을 찾아 안내해드리겠습니다.
NullReferenceException은 대부분 객체가 null인데 접근을 시도할 때 발생합니다. 이는 여러분의 코드에서 socket이 의도한 대로 초기화되지 않은 상태에서 접근하고 있다는 것을 의미합니다. 아래 몇 가지 참고할 만한 링크와 요약된 정보를 제공드립니다:
일반적인 네트워크 허용 문제나 방화벽 문제 역시 실행시에 영향을 줄 수 있습니다. 네트워크 허용 창을 확보하거나 작업을 원활하게 하기 위해서는 처음 실행 시 네트워크 허용 옵션을 올바르게 설정해야 합니다. 혹시 네트워크 허용을 빠르게 지나쳤다면 시스템 방화벽 설정에서 해당 프로세스를 허용할 수 있도록 수동으로 추가해보시길 권장합니다.
질문하신 내용과 관련된 기존의 문제들을 참고해보면서도, 다양한 디버깅 방법을 시도해 보시면 좋겠습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
해결이 안돼요..