Microsoft MVP성태의 닷넷 이야기
소켓 비동기 ReceiveTimeOut 구현 [링크 복사], [링크+제목 복사],
조회: 18050
글쓴 사람
봉봉이
홈페이지
첨부 파일
 

안녕하세요.
비동기 소켓 Receive Timeout 구현에 관해서 질문을 드립니다.
제가 구현하려고 하는것은 Socket이 정말 끊어졌있는지 확인하려는 용도로 2분 마다 timer로 client, Server간 핸드쉐이킹으로 메세지를 주고 받습니다. 그리고 client가 server로 부터 얼마동안 메세지를 받지 못하면 socket이 끊어졌다 판단하고 재접속하는 로직입니다.

따라서, recievetimeout을 구현해야 하는데..

구글링 하여 구현 방법으로는 아래와 같이 WaitOne으로 감지하는 것인데 우선 WaitOne으로 ReceiveTimeout을 구현할 수 있는지 궁금합니다.
(우선 구현해서 테스트 해본 결과 계속 res가 false로 들어오긴 하네요 ㅠㅠ)

var result = socket.BeginReceive(_dataBuf, 0, _dataBuf.Length, SocketFlags.None, WorkerCallBack, null);

IAsyncResult res = result.AsyncWaitHandle.WaitOne(_receiveTimeout, false);
if (!res)
{
   //timeout발생
}
        








[최초 등록일: ]
[최종 수정일: 1/13/2020]


비밀번호

댓글 작성자
 



2020-01-13 07시12분
간단한 테스트 코드를 올려주세요.

재현 가능한 최소한의 예제 프로젝트란?
; http://www.sysnet.pe.kr/2/0/11452
정성태
2020-01-14 09시14분
[봉봉이] 안녕하세요. 우선 소스 봐주셔서 감사합니다.
제가 참고한 소스가 아래와 같습니다. https://learn.microsoft.com/ko-kr/dotnet/framework/network-programming/asynchronous-client-socket-example
제가 생각했을 때 OnDataReceived 함수에서 EndReceive()를 호출 한뒤에 계속 서버가 데이터 수신을 위해서 BeginReceive전 WaitOne(timespan, false)을 호출하면 된다고 생각을 했는데..
혹시 다른방법이 있을까요? 찾아본봐로는 타이머를 Wrapping하는 방법이 있긴 하던데.. 이것도 잘 안되서요.
[guest]

... 91  92  [93]  94  95  96  97 
NoWriterDateCnt.TitleFile(s)
133김용국4/1/200510780                답변글 [답변]: [답변]: [답변]: [답변]: SmartClient 배포와 관련해서 무엇이 빠졌는지 좀 알려주시면 감사하겠습니다....!
126구정모3/31/200512076이홈의 효과는 어떻게???
128정성태3/31/200511232    답변글 [답변]: 이홈의 효과는 어떻게???
124배재현3/30/200511048Smart Client 문제로 이렇게 질문을 하나 올리게 됐습니다.^^;;
125정성태3/30/200510695    답변글 [답변]: Smart Client 문제로 이렇게 질문을 하나 올리게 됐습니다.^^;;
121안연준3/23/200510456이벤트 관련 문제
122정성태3/23/200510353    답변글 [답변]: 이벤트 관련 문제
120안연준3/23/200510289정성태님.... 오프라인 문제 질문 입니다. [1]
123정성태3/23/200510527    답변글 [답변]: 정성태님.... 오프라인 문제 질문 입니다. [1]
117정준명3/21/200511418COM+ 메소드 작성시...
118정성태3/29/200510973    답변글 [답변]: COM+ 메소드 작성시... [1]
109김용국3/18/200511963IE에 Docking된 WinFormControl내의 특정 메소드에 값을 보내기 .. 잘 되기는 하는데 한가지 문제가 ...
112정성태3/19/200511113    답변글 [답변]: IE에 Docking된 WinFormControl내의 특정 메소드에 값을 보내기 .. 잘 되기는 하는데 한가지 문제가 ...
113김용국3/19/200511048        답변글 [답변]: [답변]: IE에 Docking된 WinFormControl내의 특정 메소드에 값을 보내기 .. 잘 되기는 하는데 한가지 문제가 ...
114정성태3/19/200511075            답변글 [답변]: [답변]: [답변]: IE에 Docking된 WinFormControl내의 특정 메소드에 값을 보내기 .. 잘 되기는 하는데 한가지 문제가 ...
115김용국3/21/200510484                답변글 [답변]: [답변]: [답변]: [답변]: IE에 Docking된 WinFormControl내의 특정 메소드에 값을 보내기 .. 잘 되기는 하는데 한가지 문제가 ... [1]
119김용국3/22/200510449                    답변글 [답변]: 정상태님 아주 잘 해결 되었습니다.... 감사합니다!
108guest3/17/200510607닷넷 프레임워크 배포
111정성태3/19/200511116    답변글 [답변]: 닷넷 프레임워크 배포
107안연준3/17/200510285[-_-]스마트 클라이언트에 관련 된 질문[-_-]
110정성태3/19/200511217    답변글 [답변]: [-_-]스마트 클라이언트에 관련 된 질문[-_-]
116안연준3/21/200510608        답변글 [답변]: 친절한 답변 고맙습니다.
98김용국3/18/200512506정성태님... 연결이 준비됬습니다
99정성태3/2/200513427    답변글 [답변]: 정성태님... 연결이 준비됬습니다
100김용국3/18/200510392        답변글 [답변]: 죄송합니다! 급히올리느라 file path의 변경을 하지않고 그냥올렸네요....!
101정성태3/2/200510596            답변글 [답변]: [답변]: 죄송합니다! 급히올리느라 file path의 변경을 하지않고 그냥올렸네요....!
... 91  92  [93]  94  95  96  97