2015. 6. 14. 15:00

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