각각의 PC에 Server 와 Client 콤포넌트로 Socket통신을 테스트 중입니다.
제가 테스트 한것은 일정시간 Client 가 Server로 접속을 실패하였을 경우 입니다.
처음에 Connect이 된 상태에서 접속이 끊어지면 DisConnect 이벤트가 발생했다가
일정시간 접속이 성공하지 않으면 Error 이벤트가 발생하는데 이때 처음에 발생하는 Error Code
가 10038인가 Error입니다. 이때 Server 를 작동 시키면 바로 Connect가 됐다가 Connect가 Error
이벤트가 몇번 번갈아 가며 동작하다가 Error 이벤트에서 Error Code = 10060 이 발생하면서
프로그램을 아예 종료 했다가 재작동 시키기 전에는 더이상 접속이 되질 않습니다.
물론 Error Code := 0 Socket.Close 처리는 Error 이벤트에 처리해 놓았구요.
이렇게 되었을때는 강제로 Client.Active를 False 로 하여 놓고 타이머에서 매초마다
Client.Active가 False일때 접속을 시도하도록 하여 놓아도 소용이 없습니다.
또 Server 쪽에는 Connect이 되어있는 상태로 유지 되어 있구요.
어떻게 하면 프로그램을 종료 하지 않고 안정적으로 접속을 끊었다가 다시 연결을 할수 있을까요?
조언좀 부탁드립니다.
socket open 후 바로 처리로직을 넣으시면 안되고, onConnected 이벤트 발생시 실제 connect된 것이므로 이때 로직을 넣어야 하고요,
마찬가지로 socket close 할때도 onDisconnect 이벤트때 실제 disconnect된 것이므로 해당 로직을 넣으시면 되겠죠.
sockect 관련한 error dialog는 보다 시스템 레벨에서 나오는 것이니, try...except로는 해결 안되므로 님께서 하신대로 onError 이벤트 핸들러에 error code :=0 넣으시면 되고요.
아무튼, timer 거실때 socket close 확인은 onDisconnect로 하셔야 별 무리 없습니다.