네트워크16 환형큐 #pragma once #include "CircularQueue.h" CircularQueue::CircularQueue(void): front(0), rear(0){queue.reserve(Queue_Max);} CircularQueue::~CircularQueue(void){} //큐에 숫자를 추가 하는 함수//intput = 큐에 저장될 수bool CircularQueue::enqueue(char* input){if(((rear + 1) % Queue_Max) != front) //tail 인텍스 + 1과 head인덱스 값이 같으면 큐가 찼음{//큐에 삽입후 tail인덱스 증가strcpy_s(queue[rear++].str, input);rear = rear % Queue_Max;return tr.. 2014. 9. 17. Node.js 시작하기 Node.js: Hello로 시작하는 Web 애플리케이션Posted by 한 성영 in 배움터 - 열공, 일터 - 경험과 노하우on Mar 28th, 20142009년 Ryan Dahl이 발표한 Node.js 는 자바스크립트로 서버 애플리케이션을 구현할 수 있게 해 주는 서버 플랫폼입니다. C나 Java 언어가 주도하던 기존의 기업형 서버 환경에서 이제 자바스크립트가 하나의 영역으로 자리 잡아가고 있습니다. Node.js 덕분에 자바스크립트를 잘 구사하는 UI 개발자들도 서버 영역에 진입할 수 있게 된 것이죠.그러나 자바스크립트 언어만 능숙하다고 당장 Node 애플리케이션을 구현할 수는 없습니다. Node.js 개발자는 이벤트 기반의 비동기 프로그램을 이해해야 하며 Node.js 및 주변 인프라에서 제공.. 2014. 4. 8. 윈도우 소켓프로그래밍 C++ 기본 소스 // WinServer.cpp : 콘솔 응용 프로그램에 대한 진입점을 정의합니다. // #include "stdafx.h"#include #include #include #define PORT 9999 void ErrorHandling(char* message); int _tmain(int argc, char** argv) { WSADATA wsaData; SOCKET hServSock; SOCKET hClntSock; SOCKADDR_IN servAddr; SOCKADDR_IN clntAddr; int szClntAddr; char message[] = "Hello World\n"; /*Windows Socket API(윈속 - 윈도우에서 TCP/IP기반의 소켓 프로그래밍을 지원하기 위해 만든 소켓 함.. 2014. 2. 14. 라우팅 라우터란? - 지능을 가진 경로 배정기- 외부의 어떤 인터넷 사이트를 찾아가는 데이터가 있다면 라우터는 이 데이터를 목적지까지 가장 빠르고 효율적인 길을 스스로 찾아 안내해줌.- 라우터가 하는 일은 Path Determination 과 Switching- 라우터에 들어가는 OS를 IOS라고 한다.- 인터페이스 : 라우터에 나와있는 접속 가능한 포트. Ethernet(내부네트워크와 연결) 과 Serial(외부 네트워크와 연결) 이 있다. 라우팅 프로토콜과 라우티드 프로토콜 - 라우팅 프로토콜 : 라우터에 살면서 라우티드 프로토콜들에게 목적지까지 가장 좋은 길을 갈 수 있게 해주는 역할. RIP,IGRP, OSPF, EIGRP 등 - 라우티드 프로토콜 : 라우팅을 당하는 프로토콜. TCP/IP,IPX등 라우.. 2014. 2. 12. congestive collapse 대충 컨제스티브 컬랩스 congestive collapse [성준] [오후 4:59] 네트워크 통신이란게 UDP던 TCP던 네트워크를 쏘면[성준] [오후 4:59] 라우터를 거쳐서 통신을 하게 되는데[성준] [오후 4:59] 패킷 100바이트 쏜다고[성준] [오후 5:00] 100바이트가 통채로 가는게 아니자나?[성준] [오후 5:00] 그래서 라우터가 그 패킷 조각이 오면 저장해놓고 있어야 하거든[성준] [오후 5:00] 근데 이 라우터가 버퍼가 다 차버리면[성준] [오후 5:00] 패킷 조각을 버린단 말이지[성준] [오후 5:00] 그러면 UDP같은 경우엔 걍 손실되는거고[성준] [오후 5:00] TCP같은 경우엔[성준] [오후 5:00] 손실체크를 해서 재전송을 하게 되는데[성준] [오후 5:00] 그래서 UDP 손실률은.. 2014. 2. 11. 소켓 IO overlapped CallBack Overlapped 입출력하나의 쓰레드 내에서 동시에 여러개의 입출력을 진행WSASocket사용WSA_FLAG_OVERLAPPED 플래그로 Overlapped IO기능기존 recv/send의 개선 -> WSASend, WSARecv 로 사용Accept 및 Recv 이후 초기 Recv 동작전송과 수신의 과정으 ㄹ완료하지 않음데이터를 각각 소켓의 Overlapped 구조 버퍼에 복사전송과 수신을 백그라운드 동작Non 블러킹 비동기적으로 IO 처리 멀티로 IO요청이 가능함버퍼링 오버헤드가 줄어든다. 2. Callback 방식Overlapped 구조체에 CompletionFunction을 지정하여 CallbackWsARecv / WSASend 함수 호출이 완료되었을 때 지정한 Callback 함수 호출해당 Ca.. 2013. 5. 22. IOCP 구현 IOCP구현Completion Port 오브젝트 생성(소켓과 오브젝트 연결)HANDLE CreateIoCompletionPort()서버의 리슨소켓 / 각클라이언트의 소켓이 생성될때 오브젝트 생성보통 CPU의 2배수로 WorkerThread 생성루프를 돌면서 Completion Queue를 계속호출Completion Queue의 Completion Packet확인발생한 IO를 가져오기BOOL GetQueuedCompletionStatus()Overlapped 구조체를 통해 IO_Read / IO_Write 를 구분 2013. 5. 22. WSAAsyncSelect 사용하기 WSAAsyncSelect 모델WSAAsyncSelect() 함수가 핵심적인 역할을 한다는 뜻에서 붙인 이름이 모델을 사용하면 윈도우 메시지 형태로 소켓과 관련된 네트워크 이벤트를 처리할 수 있다. 모든 소켓과 관련 메시지는 하나의 윈도우, 즉 하나의 윈도우 프로시저로 전달되므로 멀티스레드를 사용하지 않고도여러 소켓을 처리 할 수 있다.입출력 절차1) WSAAsyncSelect() 함수를 이용하여 소켓을 위한 윈도우 메시지와 처리할 네트워크 이벤트를 등록한다. ex) 소켓을 통해 데이터를 보내거나 받을 수 있는 상황이 되면 특정 윈도우 메시지로 알려달라는 내용을 등록한다.2) 등록한 네트워크 이벤트가 발생하면 윈도우 메시지가 발생하고 윈도우 프로시저가 호출된다.3) 윈도우 프로시저에서는 받은 메시지의 종.. 2013. 5. 14. 채팅프로그램 메신저 소스 http://blog.naver.com/ree31206/46430095채팅 프로그램(메신저) 소스 [WSAAsyncSelcet 모델] WSAAsyncSelect 함수는 핵심적인 역활을 하게 된다.윈도우 메시지 형태로 소켓과 관련된 네트워크 이벤트를 처리할 수 있다. Point. 모든 소켓과 관련된 메시지는 하나의 윈도우 프로시저로 전달되므로 멀티 스레드를 사용하지 않고도 여러 소켓(다중접속)을 처리 할 수 있다.// 쓰레드를 사용안하겠다는 말이다... * WSAAsyncSelet 모델을 이용한 소켓 입.출력 절차 1. WSAAsyncSelect() 함수를 이용하여 소켓을 위한 윈도우 메시지와 처리할 네트워크 이벤트를 등록한다. // 소켓을 통해 데이터를 보내거나 받을수 있는 상황이 되면 특정 윈도우 메시.. 2013. 5. 14. 이전 1 2 다음