-
20250520 개발일지. 네트워크 관련 게시글 읽기 및 버그 해결.개발일지/C# 채팅 프로그램 2025. 6. 12. 13:25
# 채팅 서버에 패킷 사이즈를 허위로 설정하고 보낼 경우
패킷 사이즈 허위 -> 연결 해제
# 엔디안
빅엔디안 작은주소에서 큰주소. 사람 보기 직관적. 네트워크 통신에선 빅엔디안 사용.
리틀엔디안은 큰주소에서 작은주소. 데이터 타입 캐스팅에 유리. 예로 short 타입 0x0001를 리틀엔디안으로 저장할 경우 0x01 0x00 순으로 저장되는데 char 타입으로 캐스팅 시 앞 0x01 만 가져오면 됨.
# C# 직렬화 방식별 벤치마크
unsafe 키워드와 비슷한 속도인 tryWriteByte가 사용하기 제일 좋음
https://rito15.github.io/posts/cs-serializations-to-byte-array/# 채팅 프로그램 버그 수정 시행착오
클라이언트 커넥션 부분에서 해당 에러 발생하는데 원인을 모르겠다 -> connectArgs.RemoteEndPoint = iPEndPoint; 엔드포인트 설정 안함
System.ArgumentNullException: 'Value cannot be null. (Parameter 'remoteEP')'
클라이언트 소켓 읽기부분에서 해당 에러 발생 -> 세션 생성자와 커넥션 완료 이벤트 두곳에서 리시브 메소드 호출
System.InvalidOperationException: 'An asynchronous socket operation is already in progress using this SocketAsyncEventArgs instance.'
처음 메세지 전송 -> 서버에 전달 안됨 -> 두번 째 시도 시 해당 에러 발생
System.ObjectDisposedException: 'Cannot access a disposed object.
Object name: 'Systehttp://m.Net.Sockets.Socket'.'# 개발일지
생각보다 진척이 더디고 잔 실수가 많은 것 같다. 역시 강의만 많이 듣는 것보다 실습을 많이 해보는게 내가 모르는 것을 알고 발전하는데 도움이 되는 것 같다.
오늘은 직렬화 역직렬화 구조, 패킷 매니저, 패킷 핸들러를 만들었다. 일단 세션으로 네트워크 코드를 분리하여 서버와 클라이언트 둘다 사용 가능하게 했는데 에러가 많은 것 같다.'개발일지 > C# 채팅 프로그램' 카테고리의 다른 글
20250521 개발일지. 버그 수정 및 코드 최적화 (0) 2025.06.12 20250519 개발일지. 소켓 관련 게시글 읽기 및 개발 착수. (0) 2025.06.12 20250516 개발일지. 소켓 관련 게시글 읽기 6. (0) 2025.06.11 20250515 개발일지. 소켓 관련 게시글 읽기 5. (0) 2025.06.11 20250514 개발일지. 소켓 관련 게시글 읽기 4. (0) 2025.06.11