# Winsock

5개의 포스트

Windows Socket Programming (1) - Winsock 시작하기, 소켓 생성

Winsock이란? UNIX 소켓을 기반으로 윈도우 환경에서 사용할 수 있게 만든 네트워크 프로그래밍 인터페이스. UNIX 소켓과는 다르게... 윈도우 소켓은 DLL을 통해 사용 가능하다. 따라서 초기화() 및 종료() 작업을 위한 함수가 필요하다. 윈도우는 대개 GUI 기반이므로 이를 위한 확장 함수가 존재한다. 윈도우는 멀티스레드를 OS에서 지원하므로, 멀티스레드 환경에서 안정적인 구조와 함수가 필요하다. 유닉스 소켓과의 코드 호환성과 이식성이 뛰어나다. 그러나, 유의사항 응용 레벨의 프로토콜은 프로그래머가 설계해야 한다. 호스트 간 Byte Ordering이 다르거나 처리 비트 단위가 다른 경우 응용 레벨에서 처리해야 한다. Winsock을 사용하는 응용 프로그램의 흐름도는 → → → → 와 같다. Winsock을 사용하려면 먼저 사용할 **Winsock 버전을 요청하여 Winsock 라이브러리를 초

2023년 5월 11일
·
0개의 댓글
·
post-thumbnail

Agrio - 구현 설명

1. 게임 구조 수정 > Game.cpp / GameObject.h 프레임 타이머를 추가하고 60프레임으로 고정하여 일정하게 애니메이션 추가와 업데이트가 이뤄지도록 수정 1.1 Class 구조화 C언어로 작성된 클라이언트를 수정하며 class를 사용하여 게임 객체들을 구조화하였음 캡슐화를 통해 내부 파라미터의 접근을 막고 접근할 수 있는 함수들을 제공하여 그 함수들을 통해 접근 ![](https://ve

2022년 12월 12일
·
0개의 댓글
·
post-thumbnail

Agrio

1. 프로젝트 소개 프로젝트 링크: https://github.com/go4521304/Agrio_portfolio 플레이 영상: https://www.youtube.com/watch?v=GOXKOL1dTHQ 개발 기간: 2021.11 ~ 2021.12 팀 구성: 클라이언트, 서버, 서버 총 3인 참여: 클라이언트 프로그래머, 팀장, 리소스 수집 사용: WinAPI, WinSock 1.1 게임 소개 > 서바이벌 슈팅 멀티플레이 게임으로, 3명의 플레이어는 맵에서 최후의 1인이 남을 때까지 싸워서 살아남는 게

2022년 12월 9일
·
0개의 댓글
·

언리얼 엔진 소켓 프로그래밍 (2) Send, Recv / 쓰레드 생성

지난 시간에는 FSocket과 Winsock을 사용하여 서버와 연결을 해보았다. 이제 패킷을 전송해보고 받는 것을 알아보자. 또한 동기식 소켓으로 구현을 하여 데이터를 받으면 Recv 가 대기를 하기 때문에 게임 루프에 영향을 준다. 스레드를 생성하여 게임 루프에 영향이 가지 않도록 하는 방법도 알아보자. 1. Send / Recv 사실 이것들은 별 특별한게 없다. Send부터 알아보자. 순서대로 지난시간에 만들었던 SOCKET 변수, 보낼 데이터, 보낼 데이터의 길이, 마지막은 flags 값인데 보통 0을 넣으면 된다. (참고 MSDN 설명) 반환값으로는 보낸 패킷의 길이를 받아올

2022년 10월 19일
·
0개의 댓글
·

언리얼 엔진 소켓 프로그래밍 (1) FSocket, Winsock 연결

언리얼 엔진에서는 기본적으로 네트워크 연결을 지원해준다. 하지만 WinAPI로 소켓프로그래밍을 하여 직접 네트워크 연결을 구현해보자. IOCP 서버와 연결하기 위해 네트워크 통신을 구현하였다. 여기서는 두 가지 API를 소개하지만 나는 그중에서 Winsock을 사용할 것이다. 1. FSocket 언리얼 엔진에서는 이미 소켓통신을 위한 API를 구비해 두었다. 물론 이 글 이후에 진행되는 모든 것 들은 다 Winsock을 이용할 것이지만 혹시 쓰실 분이 있으실까 해서 남겨놓는다. (별 다른 이유는 없고 문제가 생기면 찾기 더 쉽고 무엇보다 서버 플머가 만들어준 걸 쓰기 편하기에...) 방법은 Winsock과 크게 다르지 않다. 1.1 코드 상세 설명 [CreateSocket](https://docs.unrealengine.com/4.26/

2022년 10월 19일
·
0개의 댓글
·