본문 바로가기

게임서버4

소켓 프로그래밍 클라이언트와 서버가 네트워크 통신을 위해서 소켓 프로그래밍을 한다. 클라이언트 입장 소켓을 준비 ( 전화기로 비유) 서버 주소로 connnect (전화기로 상대방에게 연결) 소켓을 통해 서버와 패킷을 주고 받을 수 있다. 서버 입장 Listener 소켓 준비 Bind(서버 주소/ Port를 소켓에 연동) Listen Accept Listen이 맺어지면 클라랑 서버가 서로 패킷을 주고 받을 수 있다. 2022. 1. 7.
소켓통신 TCP를 이용해서 통신을 하는 경우 클라이언트 개수만큼 소켓이 있어야한다. read(), write() 함수는 호출 후 실행이 완료될때까지 리턴을 하지않는다 그러나 게임에서는 이렇게 호출 후 실행이 완료 될때까지 기다리는 것은 절대로 안된다 이유는 이렇게 기다리는 시간들을 보았을때 호출한 메인 스레드는 사용자 입장에서 보았을 때 그 기다리는 시간동안 일시 정지하는 것처럼 보이기때문이어서 부드러운 화면을 보여줄 수가 없다.. 위의 결과로 네트워크 소켓은 보통 비동기 입출력상태로 다룬다. 블로킹 소켓 read, write같이 요청을 해 놓고 응답을 대기하는 함수일때 스레드는 대기를 하게 되는데 이러한 현상을 블로킹이라고한다. 스레드가 대기하는 현상 (블로킹) -> 이러한 것들은 cpu연산을 하지 않는다 사용.. 2021. 11. 11.
네트워크 tcp, udp tcp는 연결 지향형 프로토콜이다, 일대일 통신만 가능 , 블로킹 소켓 블로킹이란 , 디바이스에서 처리 요청을 걸어 놓고 대기하는 함수를 호출할 때 스레드에서 발생하는 대기 현상을 블로킹이라고한다. 블로킹이 발생하는 스레드는 기다리니 일을 하지 않는다 그래서 cpu 사용량이 0%, waitable 상태이다. 2021. 11. 8.
멀티스레드, lock,... 호출 스택 : 함수는 자신의 함수 영역을 다 실행 한 뒤 자기 자신을 호출 했던 호출자함수를 실행했던 지점으로 돌아간다 이렇게하려면 어디까지 실행하다 말았는지 기억하고 있어야하는데 이 '어디까지 실행하다 말았는지'정보를 가지고 있는 곳을 호출 스택이라고 한다. 프로스세스(실행 중인 프로그램)이 실행 된다면 그 후에 메인 스레드(프로세스 내의 실행 단위)가 생성되고 여러가지 스레드들이 실행 될 수 있다 한 프로세스 내의 스레드들은 프로세스으 자원을 공유하면서 각자의 스택영역을 가지게 되면서 자신의 역할을 마무리하면 사라진다. .join함수가 메인 스레드는 끝났더라도 서브 스레드가 끝가기를 기다려주는 함수이다 그러나 이전에 서브 스레드가 끝이 났다면 .join을 보고 지나치면서 함수 실행을 끝낸다.. 스레드.. 2021. 11. 8.