C#
delegate 01.
delegate 01.
2024.03.04C# 은 MSDN이 정답이다. 함수 & 매개변수 학습목표 언제나 그렇듯 프로그래밍 학습은 개발자 관점에서 대리자(delegate)라는 기술이, 프로그래밍에서 어떤 기존 개발 방법을 조금이라도 쉽고, 편리하게 하기 위한 것일까? 를 파악하는 것이 목표다. 학습순서 Callback 개념과 Delegate 용어 대리자를 사용하는 이유 Delegate를 선언하고 사용하는 방법 일반화 대리자를 사용하는 방법 Multicast Delegete (대리차 체인) 01. Callback 개념과 Delegate 용어 01.1 Callback 의 구조 01.2 C# 의 Callback 의 구조 01.3 Delegate 용어 Delegate 라는 용어는, 한국어로 '대리자', '대리인'을 의미합니다. 대신해서 일해주는 것을 ..
5. 비동기 TCPListener 예제
5. 비동기 TCPListener 예제
2023.10.06동기화 코드의 문제점 데이터를 보내는 작업과 받는 작업이 블록되는 문제 상황을 강제로 발생시켜보자. 네트워크 프로그램은 많은 부분에서 비동기 코드가 필요하다. Read( ) 함수의 동작은 C언어의 Scanf( ) 동작과 유사하다. Read( ) 함수는 stream에 전달받은 데이터가 있다면, 데이터를 읽어들인다. 하지만 읽을 데이터가 없다면, 데이터가 들어올 때까지 대기하는데, 이때 실행 흐름은 블록된다. 만약 이 상태에서 데이터를 전송시키고 싶다면, Send( ) 가 실행 제어권을 가지지 못하기에 전송 작업 실행은 불가능하다. 위의 예제 프로젝트의 소스코드는, 이전 포스트와 동일하다. TCPServer, TCPClient_Protocol 을 실행시면, 한 번의 전송 이후 각자 Read( ) 에서 서로 ..
4. 프로토콜
4. 프로토콜
2023.10.06프로토콜 1 응용 프로그래밍에서 네트워크를 사용해 데이터를 송수신 할때 사용하는 규칙을 의미한다. 네트워크 응용 프로그래밍에서, 일반적으로 데이터를 보낼 때는 정확한 바이트 파악 할 수 있다. 하지만 데이터를 받을 때는 몇 바이트가 올지 알 수가 없다. 그리고 데이터가 분산되어 여러번 전달 될 수도 있다. 그렇기에 네트워크 응용 프로그래밍은 서버와 클라이언트 사이에 주고 받는 데이터의 크기 및 데이터 구조 등에 대해 프로토콜(규칙)을 개발자가 정해야 한다. 프로토콜(규칙)의 예시 헤더에 차후 보낼 바이트의 크기 전송한다. 전달하는 데이터 마지막에 특정한 End of Message 마크를 사용한다. 일정 시간 아무 데이타가 없으면 수신 종료한다. 연결 종료시점까지 데이터를 읽는 방법 만약 이러한 프로토콜이..
3. TCPClient, TCPListener 예제
3. TCPClient, TCPListener 예제
2023.10.06TCPClient & TCPListener 내부적으로 System.Net.Sockets.Socket 클래스를 사용한다. 하지만 Socket 으로 작업하는 것보다 훨씬 간결하다. 네트워크 데이터 송수신은 기본적으로 바이트 자료형을 사용한다. 따라서 문자열을 보낼 경우 먼저 바이트로 인코딩한 후, 일반 영문은 ASCII로 인코딩하고, 한글 등 비영문 문자열은 UTF8 인코딩을 사용한다. 실행 흐름 TCPListener Server의 Listen( ) 동작을 의미한다. using System.Net.Sockets; using System.Net; namespace TcpServerTest { class Program { static void Main(string[] args) { // [1] 서버의 Liste..
2. .Net Socket 예제
2. .Net Socket 예제
2023.10.06프로그래밍 기술을 바라보는 개발자의 관점 모든 프로그래밍 기술은, 현실의 문제를 컴퓨터를 사용해 해결하는 하나의 방법일 뿐이다. 모든 프로그래밍 기술은, 인간이 사용해왔고, 현실에 존해하는 방법과 동일하다. 대표적으로 데이터베이스와 네트워크가 현실의 도서관과 물류 운송과 개념이 같다. 네트워크 개념 네트워크 동작은 물류 시스템과 비슷하다. 운송하는 대상이 상품에서 데이터로 변경되었을 뿐이다. 물류 운송처럼 네트워크 통신은 어떤 기기의 저장장치에 있는 데이터를 다른 기기에 저장장치로 옮기는 것이다. 문제가 있다면, 물류 센터의 시스템이 복잡하듯, 네트워크 통신은 서버의 데이터를 관리하는 방법이 어렵다. 우체국 택배를 보내는 절차와 통신 절차를 비교해보자. 물류 통신 대상 물건 데이터 1 상품의 크기에 맞춰..
1. 소켓 네트워크
1. 소켓 네트워크
2023.10.06Socket Socket Socket은 단말(eg. 전화기)을 논리적으로 추상화한 형태로, 일반적인 프로그램의 네트워크 기능은 Socket 표준 기반으로 구현되어 있다. C, C++, C#, Java, Python 등 프로그래밍 언어에서 사용하는 네트워크 라이브러리는 내부적으로 Socket 표준을 기반으로 한다. 그 중, 가장 기반이 되는 Low level Socket API 는, C언어 POSIX library 에 포함된 된 이다. 프로그래밍 언어마다 사용법이 상이한 네트워크 라이브러리 제공하더라도, Socket 을 조금 더 편리하게 사용하도록 발전된 형태의 라이브러리들에 불과하다. 그렇기에 C#, Java, Python 도 C언어의 Low level Socket API 와 비슷한 구현이 가능한 방법을..
VS2022 터미널 한글 깨짐
VS2022 터미널 한글 깨짐
2023.09.221. 시스템 로케일 korean 으로 수정 https://basiclike.tistory.com/6 대부분 여기서 해결된다. 1번으로 해결 안되면, 2번 실행 2. 위 시스템 로케일 수정에서 Unicode UTF-8 사용 체크 [시스템 로캘 변경] >> Beta : 세계 언어 지원을 위해 Unicode UTF-8 체크 2번으로 해결 안되면, 3번 실행 3. 비주얼 스튜디오 설정 Visual Stdio 실행 후 도구(t) > 옵션 > 텍스트 편집기 > 일반 > 서명 없는 UTF-8 인코딩 자동 검색 체크 해제
C# 버전과 개발환경
C# 버전과 개발환경
2023.03.17C# 환경 설정은, 처음 공부하는 사람에겐 좀 복잡하다. .net 이라는 이름으로 여러 기술 스택이 사용된다. ① C# 버전과 .NET Framework ② .NET 통합 흐름 ③ .NET Cross Platform 1).NET Framework Link, 2).NET Link, 3).NET Standard Link ④ MAUI (Multi-platform App UI) ⑤ Visual Studio Installer Microsoft Learn .NET MAUI 7 Link