전체 글 254

P2P 메신저 - 파일 수신 서버 구현 [C#]

1. 유튜브 동영상 강의 이번 강의는 파일 수신 서버 구현 실습이예요. 이전 글(P2P 메신저 - 파일 전송 클라이언트 구현 [C#]) 이 필요하겠네요. 2. 이벤트 인자 및 대리자 소스 코드 2.1 연결 요청 수락 이벤트 인자 및 대리자 using System; using System.Net; namespace 파일_수신_서버 { public delegate void AcceptedEventHandler(object sender, AcceptedEventArgs e); public class AcceptedEventArgs:EventArgs { public IPEndPoint RemoteEndPoint { get; private set; } public string IPStr { get { return..

P2P 메신저 - 파일 전송 클라이언트 구현 [C#]

1. 유튜브 동영상 강의 안녕하세요. 언제나 휴일에 언휴예요. 이번 강의는 파일 전송 클라이언트를 구현하는 실습입니다. 파일 전송 및 수신에 필요한 서버와 클라이언트는 P2P 메신저를 구현할 때 필요한 요소 기술입니다. 먼저 익히고 넘어갈게요. 다음글 P2P 메신저 - 파일 전송 클라이언트 구현 [C#] 도 같이 학습하세요. 2. 파일 데이터 전송 이벤트 인자 및 대리자 소스 코드 using System; namespace 파일_전송_클라이언트 { public delegate void SendFileDataEventHandler(object sender, SendFileDataEventArgs e); public class SendFileDataEventArgs:EventArgs { public stri..

P2P 메신저 – 숏 메시지 송수신 예광탄 구현하기 [C#]

1. 유튜브 동영상 강의 안녕하세요. 언제나 휴일에 언휴예요. 이번 강의는 P2P 메신저 중에서 숏 메시지 송수신 부분을 구현할 거예요. P2P 프로그램은 Peer와 Peer 사이의 통신을 하는 프로그램을 말하죠. 전통적인 네트워크 프로그래밍에서 사용자가 사용하는 응용을 클라이언트, 서비스 제공하는 응용을 서버라고 부르죠. 그런데 P2P 프로그램에서 사용자가 사용하는 Peer는 특정 네트워크 서비스를 서버를 거치지 않고 Peer끼리 직접 주고 받습니다. 이를 위해 특정 서비스의 서버 부분과 클라이언트 부분이 Peer 부분에 구현합니다. 이번 강의는 이러한 특징을 갖는 P2P 프로그램 중에 Short 메시지를 주고 받는 부분을 구현합니다. 2. 화면 배치 숏 메시지 송수신 예광탄 프로그램에서는 자신의 IP..

스택 - 버퍼 크기 고정

1. 스택 스택은 자료를 한쪽으로 보관하고 꺼내는 LIFO(Last In First Out) 방식의 자료구조입니다. 스택에 자료를 보관하는 연산을 PUSH라 말하고 꺼내는 연산을 POP이라고 말합니다. 그리고 가장 최근에 보관한 위치 정보를 TOP 혹은 스택 포인터라 말합니다. 2. 알고리즘 Push 연산 IF Top> MAX Then (꽉 차면) Overflow (버퍼 오버플로우) Else (꽉 차지 않을 때) Top = Top +1 (Top 위치를 1 증가) Buffer[Top] = data (버퍼의 Top 위치에 data 보관) Pop 연산 IF Top=-1 Then (비었으면) Underflow (버퍼 언더플로우) Else data = Buffer[Top] (버퍼의 Top 위치의 값을 데이터에 설..

힙 정렬(Heap Sort) 알고리즘

1. 알고리즘 힙 정렬은 힙 트리를 이용하는 알고리즘입니다. 최대 힙을 사용하면 크기 순(Ascend)으로 정렬하고 최소 힙을 사용하면 크기 역순(Descend)으로 정렬합니다. 힙 정렬은 먼저 힙 트리를 구성합니다. 그리고 루트의 값과 맨 마지막 값을 교환한 후에 정렬 범위를 1 줄입니다. 이와 같은 작업을 반복하여 정렬 범위가 1일 때까지 반복합니다. 최대 힙 트리에서 루트는 최대 값을 갖습니다. 따라서 마지막 값과 교환하면 제일 큰 값이 맨 뒤로 배치할 수 있습니다. 그리고 난 후에 정렬 범위를 줄여나가면 최종적으로 정렬 상태를 만들 수 있는 것입니다. 힙 정렬(base:배열의 시작 주소, n: 원소 개수, compare:비교 논리) 초기 힙 구성 루트와 맨 마지막 자손 교환 n을 1 감소 반복(n..