해결된 질문
작성
·
357
0
클라이언트 코드에서
socket.Connect()를 통해 서버와 연결을 시도하는데, 이 부분에서 오류가 발생합니다.
System.Net.Internals.SocketExceptionFactory+ExtendedSocketException (61): Connection refused [fe80::1%1]:7777
at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
at System.Net.Sockets.Socket.Connect(EndPoint remoteEP)
at DummyClient.Program.Main(String[] args) in DummyClient/Program.cs:line 26
ServerCore와 동시에 실행할 때, 서버가 아직 열리지 않은 상태에서 Connect를 시도해서 오류가 나는 경우는 알겠는데, 어떨 때는 빌드 후 컴파일하고나서 계속 위와 같이 Connect 함수에서 에러만 뜨고 연결이 되지 않습니다.. 서버는 정상적으로 Init 함수가 실행되었습니다.
더욱 오리무중인건, 복불복 식으로 어떨 땐 정상적으로 동작하고 어떨 땐 에러가 발생합니다.
그래서 에러가 발생하면 프로그램을 종료시키고, 다시 컴파일시켜봅니다. 에러가 발생하지 않을 때까지요.
제가 원인을 제대로 몰라서 그런 것 같은데요, 혹시 이렇게 무식하게 계속 다시 컴파일하는 방법이 아니고 진짜 에러를 해결하는 방법이 무엇인지 궁금합니다.
답변 2
1
서버가 열리지 않아서 발생하는 문제를 잠시 예방하기 위해
클라에서 시작하자 마자 잠시 대기타도록
Sleep을 넣어주시면 될 것 같습니다.
재컴파일 부두술(?)로 해결하기 보다는
네트워크 함수에서 exception이 발생하면
그 사유를 콘솔 로그로 찍어서 살펴보고 고치는 쪽이 좋아 보입니다.
그리고 원래 네트워크 쪽은 일어날 수 있는 문제가 굉장히 많습니다.
에러가 나는 오류코드만 봐도 몇백개가 되기 때문에
그때 그때 찾아보고 고치는게 속편합니다.
0
제 컴퓨터에서 dotnet 프로세스를 완전히 종료시키고 실행해보니 잘 되네요... 음.. 일단 아직 확실하게 검증이 된 건 아니지만 에러가 발생할 때는, 프로그램이 제대로 종료되지 않아서 발생한 문제로 추정이 됩니다.
제가 에러가 발생했을 때의 ip주소를 출력해봤는데요,
제 컴퓨터에서 AdGuard라는 DNS 우회 프로그램을 사용중인데, 꼭 에러가 발생할 땐 제 localhost 주소가 안 뜨고 다른 주소가 로그로 찍히더라구요
그래서 이 우회 프로그램을 끄고 컴파일을 했더니 예전에는 간헐적으로 에러가 발생했었는데 이제는 아예 에러가 발생하지 않게 되었습니다.