서버가 종료되거나 중간에 케이블이 빠지거나 네트워크가 끊기면
소켓의 OnReceive 이벤트(보통 데이터 수신 콜백)에서 다음과 같이 해주면 정상적으로 오류 처리되니
참고하세요.
처음에는 모르고 " if (e.BytesTransferred < 0) "이렇게 했더니 IE가 무한루프에 빠집니다. Blocking상태가 되더라구요.
소켓 에러가 나면 e.BytesTransferred에 0값이 들어갑니다. 그래서 반드시
소켓 종료나 오류체크는 if (e.BytesTransferred <=0) 하면 무한루프에 빠지지 않고 종료처리할수 있어요.
C/C++ , MFC만 하다가 실버라이트 처음 접해보니 좋습니다. 배우는 시간도 샘플 프로그램 몇개 돌려보면
알수 있습니다. 시스템 프로그램은 MFC로 하고 웹 어플리케이션은 실버라이트가 최고네요.
서버도 기존에 개발해노흔게 있다면 프로토콜부분만 XML이나 문자열기반으로 수정한후 실버라이트 클라이언트와
통신하는 구조로 하면 좋아요. 웹서버도 아무거나 쓰면 되고요.... 굿 좋아요.
private void OnReceive(object sender, SocketAsyncEventArgs e)
{
try
{
if (e.BytesTransferred <=0) //0보다 같거나 작으면 소켓 종료로 처리한다.**** 주의 *****
{
this.Dispatcher.BeginInvoke((ReceiveCallback)delegate
{
txtContent.Text += "\r\n" + "소켓이 종료되었습니다.";
sv.ScrollToVerticalOffset(txtContent.ActualHeight);
MessageBox.Show("서버와 통신이 종료되었습니다.");
}, null);
return;
}
'옛글 > Silverlight' 카테고리의 다른 글
실버라이트 IIS로 배포 하기 (2) | 2010.11.23 |
---|---|
실버라이트 소켓통신 개념과 구현하는 방법 (0) | 2010.11.16 |
실버라이트 공부하기- 여섯째 시간(기본 컨트롤) (2) | 2010.10.29 |
실버라이트 공부하기- 여섯째 시간(실버라이트 컨트롤 -1) (0) | 2010.10.28 |
실버라이트 공부하기 - 다섯째시간 (SL어플의 이해) (0) | 2010.10.28 |