본문 바로가기
반응형

cs공부62

네트워크프로그래밍 - TCP vs UDP TCP와 UDP는 트랜스포트 계층에 위치한 프로토콜이다. TCP vs UDP 바운더리란? 데이터의 분할 단위 또는 분할 데이터 조각들 간의 구분을 나타낸다. 패킷이란? 네트워크 통신에서 데이터를 전송하는 단위이다. 데이터를 전송할 때 큰 데이터를 패킷으로 만들고 이를 네트워크를 통해 전송한다. 각 패킷은 헤더와 페이로드로 구성되어 있다. 헤더 : 패킷에 대한 추가적인 메타데이터 페이로드 : 패킷의 실제 데이터 예시 piggy를 패킷으로 분할하여 전송하는 경우 게임에 적용한 예시 플레이어의 이동 부분은 신속하고 실시간적인 반응이 필요하므로 UDP를 사용하는 것이 좋다. 게임 결과, 아이템 획득과 같은 한번 체크가 필요한 부분은 TCP를 사용하는 것이 좋다. 참고 : 본 내용은 MMORPG PART4 강의를.. 2023. 7. 19.
네트워크프로그래밍 - Session이란 Session이란 네트워크 통신에서 클라이언트와 서버 간의 연결을 관리하고 필요한 정보를 포함하고 있다. 앞서 사용했던 GameSession을 통하여 서버측과 클라이언트 측의 Session 차이를 알아보도록 하자 public override void OnConnected(EndPoint endPoint) 클라이언트 측 : 클라이언트가 서버에 연결되었을 때 연결 성공 후 초기 메시지를 서버로 보낸다. public override void OnConnected(EndPoint endPoint) { Console.WriteLine($"OnConnected : {endPoint}"); // 보낸다 for (int i = 0; i < 5; i++) { byte[] sendBuff = Encoding.UTF8.Ge.. 2023. 7. 15.
네트워크프로그래밍 - C# Non - blocking을 사용한 Server 소켓프로그래밍의 Connector 원래 더미 클라이언트 코드에서 Connect하는 부분을 Blocking함수를 이용했었다. socket.Connect(endPoint); 하지만 최대한 블로킹 함수를 사용하는 것을 지양해야하기 때문에 non-blocking하는 것으로 바꿀것이다. 서버는 보통 대기 상태로 손님을 기다리는데 왜 연결하는게 필요할까? 1. 서버를 메인 용도지만 connect,receive,send는 공용으로 사용하면 좋으니까 2. 서버를 하나로 만들것인지 분산해서 만들것인지 분할해서 만드는 경우가 있다. 메인 서버가 있지만 다른 애들이랑 통신하기 위해서 서버끼리 통신하기 위해 필요하다. Conncector 구현하기 1. TCP 소켓 연결을 수행하는 Connect메서드 public void Connect(EndPoint endP.. 2023. 7. 15.
네트워크프로그래밍 - Session부분과 Listener부분 분리하기(엔진과 컨텐츠 분리하기) Session Send코드 알아보러가기 네트워크 프로그래밍 -Send코드 개선하기 Send 코드 참조 네트워크 프로그래밍 - C# Non - blocking을 사용한 Server 소켓프로그래밍의 Send Receive코드 알아보러 가기 네트워크 프로그래밍 - C# Non - blocking을 사용한 Server 소켓프로그래밍의 Receive Li code-piggy.tistory.com 엔진과 컨텐츠 분리하기 이벤트 핸들러는 엔진에서 발생하는 이벤트를 처리하고 이벤트가 발생할 때 컨텐츠에 알림을 전달한다. 아래 메서드들을 통해 이벤트 핸들러와 연동될 수 있다. public void OnConnected(EndPoint endPoint) {} public void OnReceive(ArraySegment .. 2023. 7. 14.
네트워크 프로그래밍 -Send코드 개선하기 Send 코드 참조 네트워크 프로그래밍 - C# Non - blocking을 사용한 Server 소켓프로그래밍의 Send Receive코드 알아보러 가기 네트워크 프로그래밍 - C# Non - blocking을 사용한 Server 소켓프로그래밍의 Receive Listener코드 알아보러 가기 네트워크프로그래밍 - C# 간단한 Non - blocking 사용한 Server 소켓프 code-piggy.tistory.com 1. BufferList사용하기 01 한번에 하나의 버퍼를 전송 void RegisterSend() { _pending = true; // 다음에 Send되는애가 Register안돼고 바로 queue에 담겨지기 위해서 byte[] buff = _sendQueue.Dequeue(); _se.. 2023. 7. 13.
네트워크 프로그래밍 - C# Non - blocking을 사용한 Server 소켓프로그래밍의 Send Receive코드 알아보러 가기 네트워크 프로그래밍 - C# Non - blocking을 사용한 Server 소켓프로그래밍의 Receive Listener코드 알아보러 가기 네트워크프로그래밍 - C# 간단한 Non - blocking 사용한 Server 소켓프로그래밍 구현 blocking방식 이용한 Server코드 네트워크 프로그래밍 - C# 간단한 Server 소켓프로그래밍 구현 code-piggy.tistory.com void RegisterSend(SocketAsyncEventArgs args) { bool pending = _socket.SendAsync(args); if (pending == false) OnSendCompleted(null, args); } void OnSendCompleted.. 2023. 7. 7.
반응형