본문 바로가기

게임개발/게임서버11

멀티 스레드 환경에서 소켓 프로그래밍 소켓OS 내부에는 "프로토콜 스택"이 있는데, Transport 계층이라 불리는 TCP 또는 UDP는 Applicaton 계층에서 송수신할 데이터를 받아서 해당 프로토콜에 맞게 작업을 하고, 인터넷에서 데이터를 송수신하기 때문에 헤더 정보를 다시 Internet 계층인 IP로 묶고, IP 프로토콜이 속한 계층 아래에 있는 데이터 링크 계층인 랜카드의 Mac 주소를 헤더 정보로 다시 묶은 다음 최종적으로 물리 계층에 있는 통신 케이블 같은 장비를 통해서 데이터를 송수신한다.노드(노트북, 휴대폰 ..등의 전자기기)들이 서로 데이터를 송수신하기 위해서 "소켓"이라는 것을 이용한다.즉, 소켓을 만든다는 의미는 데이터를 어떻게 송수신할 건지에 대한 프로토콜 종류(TCP, UDP), 송신 측과 수신 측의 IP 주소.. 2024. 5. 18.
네트워크 기초 네트워크란?노드(네트워크에 속한 컴퓨터 또는 통신장비)들이 데이터를 주고받을 수 있도록 디지털 전기 통신망으로 연결한 것 인터넷전 세계를 연결하는 범위가 큰 네트워크ex) www -> 인터넷을 통해 웹과 관련된 데이터를 공유하는 것 네트워크 범위1. LAN(근거리 통신망)같은 네트워크 대역에 있는 노드들끼리 통신 2. WAN 네트워크 대역이 다른 노드들이 통신할 때 통신 범위를 넓혀서 네트워크 대역이 다르더라도 통신이 가능하게 만듬 ex) 집에서 컴퓨터로 구글 웹사이트를 들어갔을 때 네트워크 상에서는 다음과 같이 표시된다.  네트워크 통신 방식1. 유니 캐스트1:1로 통신하는 방식(특정한 하나의 대상과의 통신) 2. 멀티 캐스트같은 네트워크 대역에서 특정한 다수를 대상으로 통신 3. 브로드 캐스트같은 네.. 2024. 4. 22.
동기화 동기화란? 1. 프로세스나 스레드의 실행 순서를 제어 ex) Reader 작업을 하는 스레드와 Writer 작업을 하는 스레드가 있을 때 Writer 작업이 먼저 끝나야지 Reader 작업을 해야한다고 했을 때 동시에 실행 될 수 있는 스레드를 작업 순서대로 진행하게 함 2. 동시에 접근해서는 안 되는 자원에 하나의 프로세스 또는 스레드만 접근하게 하기 동시에 접근해서는 안되는 자원 즉, 공유자원(전역변수, 파일, DB ..등)의 동시 접근을 막는 것이다. 동시에 실행하면 문제가 발생하는 자원에 접근하는 코드 영역을 "임계 구역"이라고 한다. 두 개 이상의 스레드가 임계 구역에 진입하고자 하면 둘 중 하나는 대기해야 됨 여러개의 스레드가 동시에 "임계 구역"의 코드를 실행해서 문제가 발생하는 경우 이를 .. 2024. 4. 18.
멀티스레드 InterLocked namespace ServerCore { class Program { static int number = 0; static void Thread_1() { for (int i = 0; i < 100000; i++) { number++; } } static void Thread_2() { for (int i = 0; i < 100000; i++) { number--; } } static void Main(string[] args) { Task t1 = new Task(Thread_1); Task t2 = new Task(Thread_2); t1.Start(); t2.Start(); Task.WaitAll(t1, t2); Console.WriteLine(number); } } } 1씩 100,000 번을 더.. 2024. 4. 18.