All Pages
12. TCPListener 서버 2단계
12. TCPListener 서버 2단계
2023.10.06"TCPListener 서버 2단계" 구현 목표: Accpet( ) 무한 반복, 복수의 클라이언트 연결 요청 수락 구현더보기 서버 동작 상태 관리더보기 예외 블록 처리더보기 클라이언트 연결 루프더보기 서버에서 다수의 클라이언트 연결 요청을 수락할 수 있음을 확인한다.
11. TCPListener 서버 1단계
11. TCPListener 서버 1단계
2023.10.06소켓 통신 실행 흐름과 구조더보기소켓 통신 실행 흐름 소켓 통신 실행 흐름클라이언트-서버 통신 모델더보기Network 네트워크로 연결되어 있는 서로 다른 두 컴퓨터가 데이터를 주고 받을 수 있도록 하는 것으로 물리적인 연결이 필요하다. 클라이언트-서버 통신 모델 대basiclike.tistory.com C# Socket API 동기 vs 비동기C# TcpListener/TcpClient 동기 vs 비동기 "TCPListener 서버 1단계" 구현 목표 더보기 C# 윈폼 프로젝트 생성하기더보기Visual Studio C# 윈폼 프로젝트 생성하기 Visual Studio C# 윈폼 프로젝트 생성하기VS C# 윈폼 프로젝트 생성하기더보기 추가 설정더보기basiclike.tistory.com C# 라이브러리 ..
10. C# TCPClient, TCPListener
10. C# TCPClient, TCPListener
2023.10.06소켓 통신 실행 흐름더보기소켓 통신 실행 흐름 소켓 통신 실행 흐름클라이언트-서버 통신 모델더보기Network 네트워크로 연결되어 있는 서로 다른 두 컴퓨터가 데이터를 주고 받을 수 있도록 하는 것으로 물리적인 연결이 필요하다. 클라이언트-서버 통신 모델 대basiclike.tistory.com TCPListener : Server의 Listen( ) 동작을 의미한다.더보기using System.Net.Sockets;using System.Net;namespace TcpServerTest{ class Program { static void Main(string[] args) { // [1] 서버의 Listen 동작을 바로 실행 할 수 있다. ..
6. C# Socket With async/await
6. C# Socket With async/await
2023.10.06소켓 통신 실행 흐름더보기소켓 통신 실행 흐름 소켓 통신 실행 흐름클라이언트-서버 통신 모델더보기Network 네트워크로 연결되어 있는 서로 다른 두 컴퓨터가 데이터를 주고 받을 수 있도록 하는 것으로 물리적인 연결이 필요하다. 클라이언트-서버 통신 모델 대basiclike.tistory.com VS C# 윈폼 프로젝트 생성하기더보기Visual Studio C# 윈폼 프로젝트 생성하기 Visual Studio C# 윈폼 프로젝트 생성하기VS C# 윈폼 프로젝트 생성하기더보기 추가 설정더보기basiclike.tistory.com 동기화된 코드의 문제점더보기public void AcceptIncomingSocket(){ // (1) 서버 소켓 생성 Socket listenerSocket = ne..
5. C# Sockets 서버↔클라 예제
5. C# Sockets 서버↔클라 예제
2023.10.06소켓 통신 실행 흐름더보기소켓 통신 실행 흐름 소켓 통신 실행 흐름클라이언트-서버 통신 모델더보기Network 네트워크로 연결되어 있는 서로 다른 두 컴퓨터가 데이터를 주고 받을 수 있도록 하는 것으로 물리적인 연결이 필요하다. 클라이언트-서버 통신 모델 대basiclike.tistory.com Server-Clinet 예제(1) - 기본더보기 Serverusing System;using System.Net;using System.Net.Sockets;using System.Text;class Program{ static void Main(string[] args) { // [1] 서버 소켓 생성 Socket Server_Socket = new Socket(Addr..
Thread 04. Task, Async, Await
Thread 04. Task, Async, Await
2023.10.05목표 : Task.Run + async/await + return + Task.Delay 조합 1. 비동기 프로그래밍 더보기CPU(중앙처리장치)는 메모리 접근, 데이터 입출력, 네트워크 통신, 화면 렌더링 제어 등 수많은 작업을 수행한다. 그런데 CPU가 디스크나 네트워크처럼 속도가 느린 작업이 끝날 때까지 그대로 기다린다면?? 멈춰진 고속 연산 장치 CPU의 성능이 낭비된다. 이를 방지하기 위해 비동기 프로그래밍 기법을 사용한다. 비동기 프로그래밍은 CPU가 입출력 완료를 기다리느라 멈춰 있지 않고, 그 시간 동안 다른 연산을 처리하도록 만든다. 입출력이 끝나면 알림(콜백, 이벤트 등)을 통해 해당 작업을 다시 이어갈 수 있어, CPU 자원을 효율적으로 활용할 수 있다. 2. C# 에서 ..
Thread 03. ThreadPool
Thread 03. ThreadPool
2023.10.05C# Threading 관련 기술Thread System.Threading 네임스페이스에 정의되어 있다.NET Framework 1.0부터 사용 가능하다Thread에 실행될 로직을 넘겨주며, 생성한 후 명시적으로 실행 해야 한다.Thread는, 생성, 삭제될 때 상대적으로 많은 시스템 자원을 사용해 비효율적이다.ThreadPool 은 Thread 를 미리 생성해 두고, 필요할 때 사용하고 반환하는 방식으로 기존 Thread 를 개선했다.ThreadPool System.Threading 네임스페이스에 정의되어 있다.NET Framework 1.0부터 사용 가능하다ThreadPool은 특정 이름을 지정할 수 없다.Join 과 같은 조정을 사용할 수 없다. 백그라운드 스레드라서 의도하지 않게 종료될 수 있다...
4. C# Sockets 클라 동작 구조
4. C# Sockets 클라 동작 구조
2023.10.04소켓 통신 실행 흐름더보기소켓 통신 실행 흐름 소켓 통신 실행 흐름클라이언트-서버 통신 모델더보기Network 네트워크로 연결되어 있는 서로 다른 두 컴퓨터가 데이터를 주고 받을 수 있도록 하는 것으로 물리적인 연결이 필요하다. 클라이언트-서버 통신 모델 대basiclike.tistory.com Step 0. 최소 동기 클라이언트 (기본 뼈대) 더보기using System;using System.Net;using System.Net.Sockets;using System.Text;class Step0_Minimal{ static void Main() { //(1) Socket sock = new Socket(AddressFamily.InterNetwork, Socket..
Thread 02. 스레드, 블로킹, 논블로킹
Thread 02. 스레드, 블로킹, 논블로킹
2023.10.041. 스레드 1.1 실행 중인 프로세스의 스레드 확인윈도우 환경에서, Ctrl + Shift + ESC 키를 눌러 Task Manager(작업 관리자)를 실행한다.[ Details ] 탭에서 컬럼명(Name, Status...)을 오른쪽 클릭하면 보여질 추가 정보를 선택할 수 있다.Select Columns 에서 Threads 를 체크한다.메모장 프로그램은, 실행(프로세스)중에 15개의 스레드가 작업하고 있다.(스레드의 이해 없이 프로그래밍은 불가능하다.) 1.2 스레드란? 1.2.1 Process(프로세스)가 "실행" 단위라면, Thread(스레드)는 "실행 흐름" 단위다. 하나의 프로그램은 하나 이상의 프로세스를 가지고 있고, 하나의 프로세스는 반드시 하나 이상의 스레드를 갖는다.프로그램 실행 =..
Thread 01. 프로세스, 동시성, 병렬성, 비동기
Thread 01. 프로세스, 동시성, 병렬성, 비동기
2023.10.041. 프로그래밍 기술을 바라보는 개발자의 관점 모든 프로그래밍 기술은, 폰 노이만 구조 이래 근본 원리와 기술 뿌리가 변하지 않았다.모든 프로그래밍 기술은, 개발에 필요해서 등장했다.모든 프로그래밍 기술은, 기존 개발 방법을 조금이라도 쉽고, 편리하게 하기 위해 발전된 다른 형태일 뿐이다. 그렇다면 스레드는 왜 등장했고, 어떤 부분을 개선하기 위해 등장했을까? 2. 프로세스와 실행 2.1 학습방향스레드는 프로세스를 먼저 이해해야 한다.스레드 학습 이전에 프로세스(≒실행) 관점에서 용어를 정리한다. 2.2 실행중인 프로세스 확인하기윈도우 환경에서, Ctrl+ Shift + ESC 단축키를 눌러 Task Manager(작업 관리자)를 실행한다.좌측의 [ Process ] 탭에서 현재 실행 중인 프로..
3. C# Sockets 서버 동작 구조
3. C# Sockets 서버 동작 구조
2023.10.04소켓 통신 실행 흐름더보기소켓 통신 실행 흐름 소켓 통신 실행 흐름클라이언트-서버 통신 모델더보기Network 네트워크로 연결되어 있는 서로 다른 두 컴퓨터가 데이터를 주고 받을 수 있도록 하는 것으로 물리적인 연결이 필요하다. 클라이언트-서버 통신 모델 대basiclike.tistory.com VS C# 콘솔 프로젝트 생성하기더보기Visual Studio C# 콘솔 프로젝트 생성하기 Visual Studio C# 콘솔 프로젝트 생성하기VS C# 콘솔 프로젝트 생성하기더보기 추가 설정더보기basiclike.tistory.com Step.1 서버 준비 구현더보기using System.Net;using System.Net.Sockets;namespace ConsoleApp4{ internal c..
2. IP, Port, EndPoint
2. IP, Port, EndPoint
2023.10.04IP & Port 더보기네트워크 프로그래밍 개요 네트워크 프로그래밍 개요1. 학습 순서더보기(1) 요약개념 → 구조 → 코드 → 실행 흐름 (2) 상세네트워크 프로그래밍 개념 (모든 IT 기술 공통)네트워크 프로그래밍 구조 (모든 IT 기술 공통)네트워크 프로그래밍 코드 (언basiclike.tistory.com IP 사용하기: System.Net의 IPAddress 클래스더보기일반적으로 IPv4 주소체계 기반으로 IPAddress 객체를 생성하여 IP 주소를 변수 형태로 사용[1]문자열 파싱, [2]바이트 배열, [3]정수 입력 할 수 있다.using System;using System.Net;namespace NetworkTest{ class Program { static vo..