SocketAsync Chatting 0.83.5 - 'SocketAsyncEventArgs'를 이용한 Client/Server
SocketAsync Chatting 0.83.5 - 'SocketAsyncEventArgs'를 이용한 Client/Server
SocketAsync_Chatting_Publish_20160217.zip
Author : Dang-Gun Roleeyas ( http://blog.danggun.net/ )
Create date : 2015.06.14
License : BSD ( The BSD 2-Clause License )
'SocketAsyncEventArgs'를 이용한 채팅(Chatting) Client/Server 예제입니다.
'SocketAsyncEventArgs'를 이해하고 사용하는데 목적이 있어 다중 유저 처리가 부실합니다.
이전에 만든 비동기 Client/Server 프로그램을 이용하여 만들었습니다.
(참고 : 'SocketAsyncEventArgs'를 이용한 채팅(Chatting) Client/Server 예제 0.7 )
1. 주요기능
- 비동기 TCP 통신
- 다중 유저 채팅(Chatting)
- 파일, 큰 메시지와 같은 큰 데이터(Large data) 전송
- 리스트 전송
- 연속 전송(예> 반복문에서 'send'를 하는 경우)
2. 구조
2-1. 로그인 구조
ID_Check : 소켓을 연결한후 서버한테 ID가 유효한지 확인요청을 합니다.
ID_Check_Ok, ID_Check_Fail : ID가 유요하면 'ID_Check_Ok'를 유효하지 않으면 'ID_Check_Fail'를 보냅니다.
Login : 아이디가 유효하다면 해당 아이디로 접속요청을 합니다.
Login_Complete : 서버에서 로그인 요청이 완료되었다고 알립니다.
2-2. 파일(큰 메시지) 전송 구조
참고 : [.Net] 'SocketAsyncEventArgs'에서 큰 데이터(Large Data) 전송할때 생기는 문제
큰 데이터를 'SocketAsyncEventArgs'에 한번에 보낸후 리시브데이터를 합쳐 원본 데이터를 완성시키는 방법을 사용합니다.
3. 수정 이력
2016.02.17 - 0.83.5
SocketAsync_Chatting_Publish_20160217.zip
- 소켓 처리 부분 재설계
- 소켓 처리를 재설계하면서 메시지 한번에 여러번 보내도 처리되도록 수정 되었습니다.
2016.02.14 - 0.83.2
SocketAsync_Chatting_Publish_20160214.zip
- 공통코드 분리
- 중복코드 합치기
- 클라이언트 인터페이스 수정(다른 곳에 응용이 쉽도록 변경함)
- 작은 데이터(4byte 이하)를 받을때 발생하는 예외 처리
- 리스트 주고받기 기능 추가
2015.11.12.
SocketAsync_Chatting_20151112.zip
- 일부 코드 정리
- 서버 -> 클라이언트로 대용양 메시지 전송 기능 추가
2015.11.05.
SocketAsync_Chatting_20151105.zip
- 메시지 전송 관련 클래스 캡슐화
2015.06.14.
SocketAsync_Chatting_20150614.zip
- 패킷을 무조건 인코딩하여 문자열(string)로 처리하던 방식에서 바이트어레이(byte[])를 잘라서 사용하는 방식으로 변경
- 큰메시지(파일 포함) 전송 추가(서버로만 전송 가능)
2014.09.18.
- 예제 개발 완료
참고 : 'SocketAsyncEventArgs'를 이용한 채팅(Chatting) Client/Server 예제 0.7