
2020/03/22 - [분류 전체보기] - 네트워크 프로그래밍 - 윈속 디자인(시스템 구조) 불러오는 중입니다... 메시지 중심 메시지 중심의 프로토콜에서는 하나의 메시지를 주고 받으며 각각의 메시지들은 분리되어 전송된다. 또한 수신측에서는 분리된 메시지로 데이터를 받게 됨을 의미한다. 수신측은 하나 이상의 데이터를 이어 받을 수 없다. 위 그림에서 보면 왼쪽(전송) 컴퓨터에서 128, 64, 32bytes의 데이터를 송신했고 수신측은 256byte의 버퍼를 사용해 3번의 recv를 호출한다. 첫번째 recv 호출 시 모든 패킷을 수신해도 첫번째 recv 호출은 모든 패킷을 리턴하지 않는다. 이러한 로직을 "Preserving message boundary" 라고 한다. 이 로직은 구조적 데이터(str..

시스템 구조 대부분의 윈속 API들은 winsock2.h에 선언되어 있고 ws2_32.dll에 구현되어 있다. 마이크로소프트의 윈속 확장 함수들은 mswsock.dll에 구현되어 있다. 이런 확장 함수들은 MicroSoft에서 임의로 추가한 것이라 특정 버전의 Windows에서만 작동한다. 응용프로그램이 윈속 API를 호출하면 ws2_32.dll에 존재하는 함수를 호출하게 된다. 윈속 dll의 함수들은 다음과 같은 방법으로 동작한다. 1. 입력된 파라미터들이 올바른지 검사 2. 어떤 프로토콜 서비스 프로바이더에게 명령을 전달할지 결정 윈속 카탈로그(winsock catalog)에는 여러 개의 프로바이더가 존재할 수 있다. 따라서 ws2_32.dll은 어떤 프로바이더에게 이 호출을 전달할지 결정한다. 프로..
데이터의 전송과 수신은 네트워크 프로그램의 전부라고도 할 수 있다. 데이터를 주고받기 위한 데이터 형식은 바이트 단위의 char형. 따라서 데이터의 형식은 문자열이든 바이너리든 상관없이 어떠한 데이터 형식도 전송이 가능하다. 데이터를 전송하는 함수는 send/WSASend 수신하는 함수는 recv/WSARecv가 있다. send와 WSASend int send( SOCKET s, const char FAR * buf, int len, int flags ); s : 데이터를 전송하길 원하는 연결된 소켓이다. buf : 전송할 데이터가 담긴 char형 buffer이다. len : 전송할 데이터의 크기 flag : 0 혹은 MSG_DONTROUTE, MSG_OOB 같은 값으로 설정한다. flags는 위 값들의..
윈속으로 개발하기 위한 준비 일반적으로 WinSock2.h를 include 해야 한다. WinSock2.h로 프로그래밍을 하기 위해서는 ws2_32.lib를 추가해줘야 한다. 추가는 프로젝트 속성 -> 링커 -> 입력 -> 추가 종속성에 ws2_32.lib를 추가 int WSAStartup( WORD wVersionRequested, LPWSADATA lpWSAData ); wVersionRequested : 로드하기를 원하는 윈속 라이브러리 버전을 지정 MAKEWORD(x,y) 매크로 사용 lpWSAData : LPWSADATA의 포인터, 로드된 라이브러리에 대한 정보가 리턴 typedef struct WSAData { WORD wVersion; //앞으로 사용하게 될 윈속 버전 WORD wHighVe..
람다식을 알아보기 전에 익명 메소드부터 알고 있으면 편하기 때문에 익명 메소드에 대해 먼저 설명을 해야겠다. 익명메소드는 말 그대로 이름이 없는 메소드입니다. 메소드인데 어떻게 이름이 없을까? 다음 코드를 보면 익명 메소드가 뭔지 감이 잡힐 것이다. delegate int Calc(int a, int b); public static void Main() { Calc calc; calc = delegate (int a, int b) { return a + b; } } 익명메소드는 자신을 참조할 델리게이트 형식과 동일한 형식으로 선언되어야 한다. 델리게이트의 반환 형식이 int 면 익명메소드의 반환 형식도 int여야하고 델리게이트의 매개 변수 목록이 3개면 익명메소드의 매개 변수고 3개를 받아와야 한다. 마..
- Total
- Today
- Yesterday
- 생활코딩
- C언어
- inline
- 문자열
- 차이점
- php
- 언리얼엔진
- HTML
- 동영상을
- 알고리즘
- GRID
- javascript
- PHP&MySQL
- 객체
- 언리얼엔진4
- Link
- 변수
- 정렬
- 조건문
- 생활코딩#MySQL
- 관계형데이터베이스
- TAG
- 안드로이드 스튜디오
- 글로
- visual studio code
- css
- 기초
- 네트워크 프로그래밍
- 선택자
- 생활코딩#동영상을#글로#html
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |