/// <summary> /// 생성자입니다. /// </summary> /// <exception cref="IOException">소켓 생성 및 통신 에러입니다.</exception> /// <param name="onclose">OnClose 이벤트가 발생할때 호출될 델리게이트입니다.</param> /// <param name="onconnect">OnConnect 이벤트가 발생할때 호출될 델리게이트입니다.</param> /// <param name="onrecv">OnReceive 이벤트가 발생할때 호출될 델리게이트입니다.</param> /// <param name="onevent">OnEvent 이벤트가 발생할때 호출될 델리게이트입니다.</param> /// <param name="server">서버의 주소입니다.</param> /// <param name="id">로그인할 아이디입니다.</param> /// <param name="pw">로그인할 비밀번호입니다.</param> /// <param name="usr">UserData의 초기값입니다.</param> /// <example> /// 다음 예제는 이 생성자를 이용해 ClubcChat 서버와 연결하는 법을 보여줍니다. /// <code> /// ClubcChatSock Login(string id, string pw) /// { /// return new ClubcChatSock(new ClubcChatSock.CloseDele(OnClose), new ClubcChatSock.ConnectDele(OnConnect), /// new ClubcChatSock.ReceiveDele(OnReceive), new ClubcChatSock.EventDele(OnEvent), "14.46.56.226", id, pw, null); /// // 14.46.56.226은 공식 Clubc Server의 IP입니다. /// } /// </code> /// </example> /// <seealso cref="UserData"/> public ClubcChatSock(CloseDele onclose, ConnectDele onconnect, ReceiveDele onrecv, EventDele onevent, string server, string id, string pw, object usr) { OnClose += onclose; OnConnect += onconnect; OnReceive += onrecv; OnEvent += onevent; Create(server, id, pw, usr); }
void AcceptLoop() { Socket do_sock; ReceiveDele rld = new ReceiveDele(Receive);//수신 대리자 개체 생성 try { while (true) { do_sock = lis_sock.Accept(); rld.BeginInvoke(do_sock, null, null);//비동기로 수신 } } catch { Close(); } }
void AcceptLoop() { Socket do_sock; ReceiveDele rld = new ReceiveDele(Receive); //수신 대리자 개체 생성 try { while (true) { do_sock = lis_sock.Accept(); //수신 대리자 개체의 BeginInvoke 호출로 메시지 수신을 비동기로 처리하세요. rld.BeginInvoke(do_sock, null, null); //비동기로 수신 } } catch { //예외가 발생하면 닫습니다. //상품화 수준으로 작성하시려면 스레드로 작성하는 부분을 비동기 방식으로 변경하고 다양한 테스트 조건에서 발생하는 버그들을 수정하셔야 합니다. Close(); } }
/// <summary> /// 생성자입니다. /// </summary> /// <exception cref="IOException">소켓 생성 및 통신 에러입니다.</exception> /// <param name="onclose">OnClose 이벤트가 발생할때 호출될 델리게이트입니다.</param> /// <param name="onconnect">OnConnect 이벤트가 발생할때 호출될 델리게이트입니다.</param> /// <param name="onrecv">OnReceive 이벤트가 발생할때 호출될 델리게이트입니다.</param> /// <param name="onevent">OnEvent 이벤트가 발생할때 호출될 델리게이트입니다.</param> /// <param name="server">서버의 주소입니다.</param> /// <param name="id">로그인할 아이디입니다.</param> /// <param name="pw">로그인할 비밀번호입니다.</param> /// <example> /// 다음 예제는 이 생성자를 이용해 ClubcChat 서버와 연결하는 법을 보여줍니다. /// <code> /// ClubcChatSock Login(string id, string pw) /// { /// return new ClubcChatSock(new ClubcChatSock.CloseDele(OnClose), new ClubcChatSock.ConnectDele(OnConnect), /// new ClubcChatSock.ReceiveDele(OnReceive), new ClubcChatSock.EventDele(OnEvent), "14.46.56.226", id, pw); /// // 14.46.56.226은 공식 Clubc Server의 IP입니다. /// } /// </code> /// </example> /// <seealso cref="UserData"/> public ClubcChatSock(CloseDele onclose, ConnectDele onconnect, ReceiveDele onrecv, EventDele onevent, string server, string id, string pw) : this(onclose, onconnect, onrecv, onevent, server, id, pw, null) { }