728x90 게임 서버14 [c#/네트워크] TCP와 UDP 차이 TCP와 UDP의 차이에 대해 알아보자 📌 TCP와 UDP 차이 프로토콜 종류 연결 지향성 신뢰성 속도 특징 TCP 연결형 서비스 좋음 느림 1) 연결을 위해 할당되는 논리적인 경로가 있다. 2) 전송 순서가 보장된다. 3) 분실이 일어나면 책임지고 다시 전송한다(신뢰성 👍) 4) 물건을 주고 받을 상황이 아니면 일부만 보낸다(흐름/혼잡 제어) 5) 고려할 것이 많으니 속도가 느리다 UDP 비연결형 서비스 나쁨 빠름 1) 연결이라는 개념이 없다. 2) 전송 순서가 보장되지 않는다. 3) 분실에 대한 책임이 없다(신뢰성 👎) 4) 일단 보내고 생각한다 5) 단순하기 때문에 속도가 빠르다 데이터 전송 보장 및 순서 보장을 위해서는 tcp를 주로 사용한다. tcp는 3way handshake 방식이다. 🔎 3.. 2022. 12. 22. [c#/디자인패턴] - 싱글톤(Singleton) 패턴 📌싱글톤 패턴 : 클래스의 인스턴스를 단 하나만 생성하고자 할 때 사용한다 게임 개발에서 주로 게임을 관리하는 매니저 계열의 클래스를 만들 때 적합하며, (딱 하나만 필요) 사운드를 재생하려 할 때, 관련된 정보를 어디에서나 알게 하여 누구나 재생할 수 있도록 하기 위해(전역적 접근) 사용한다고 생각하면 된다. ⭐ 특징 Lazy 초기화(Lazy initialization) : 선언 즉시 인스턴스를 생성하는 것이 아니라, 처음 접근할 때 객체를 생성한다. 상속 가능 : 하위 클래스 오브젝트도 모두 싱글톤이 된다. 1. 안전하지 않은 버전 - not thread-safe public class SingletonClass { private SingletonClass() { } //클래스의 외부에서 함부로 객체.. 2022. 12. 20. [c#/네트워크] listener 클래스를 활용한 비동기 소켓 프로그래밍 앞서 진행한 소켓 프로그래밍 구현에서 ServerCore 폴더에 Listener 파일을 추가한다. 문지기 즉, 소켓을 만드는 것을 따로 파일로 빼서 관리할 예정이다. 생성된 Listener 클래스 안에 소켓을 생성한다. Socket _listenSocket; 소켓을 초기화 하는 함수는 따로 만들 것이다. 기존 코드를 보면 (빨간 줄 무시) endPoint를 받아서 소켓을 생성하고 Bind도 하는 것을 볼 수 있다. (*기존 코드 : 전 글 확인..) 따라서 Init함수 인자로 endPoint를 넣어주며 Init() 함수를 다음과 같이 만들어 준다. Init() public void Init(IPEndPoint endPoint) { _listenSocket = new Socket(endPoint.Addre.. 2022. 12. 13. [c#/네트워크] 소켓 프로그래밍 소켓 프로그래밍을 구현해 보겠다. 다음과 같이 파일 구조를 만든다.. 그 다음 솔루션 우클릭 후, 속성에 들어가서 클라이언트와 서버가 한 번에 실행되도록 다음과 같이 설정한다. 이제 서버부터 구현해 보자. 일단 연결을 시도하려는 자에 대한 정보를 얻어야 한다. //DNS (Domain Name System) //도메인 등록 후 -> IP주소 찾게끔 만들면 유지보수가 용이함 //PC의 호스트명을 받는다 (호스트명은 IP 주소 대신 사용할 수 있는 식별 이름) string host = Dns.GetHostName(); IPHostEntry ipHost = Dns.GetHostEntry(host); //해당 호스트의 IP 관련 주소들을 받는다. IPAddress ipAddr = ipHost.AddressLis.. 2022. 12. 12. 이전 1 2 3 4 다음 728x90 반응형