[ 동기화 ] 목차 개요 lock Monitor mutex 정리 기본 개념 동기화란? 작업들 사이의 수행 시기를 맞추는 것 다수의 스레드가 동시에 공유 자원을 사용할 떄 순서를 정하는것 동기호 키워드와 클래스 lock Monitor Mutex //-------- 여기까지 키워드 Interlocked AutoResetEvent ManualResetEvent ReaderWriterLock // ----------클래스들 동기화 대상 공유 자원에 대한 접근이 예상되는 스레드 한 객체를 다수의 스레드가사용되는 때 lock 형식 기본 형식 private object obj = new object(); lock( obj ) // { // 임계(경계) 영역 (critical section ) } lock형식 의 실체..
기타 공부 기록/csharpnetwork인강
스래드 (2/2) 스레드 주요 속성과 메서드 스레드 속성 Name 스레드의 이름? 명칭 지정가능 IsAlive true or false 반환 현재 스레드 동작여부 반환 IsBackground ( foreground 포그라운드 스레드 : 주스레드 끝나도 계속 진행중인 스레드 background 백그라운드 스레드 : 주스레드가있고 부스레드가 있을때 주스레드종료와 동시에 부스레드도 종료 public bool IsBackgrount { get; set; } CurrentThread public static Thread CurrentThread {get; } 스레드 메서드 Start() 스레드 시작 Join() 스레드가 종료될 때까지 대기 Abort() 이 함수를 호출한 곳의 현재 스레드를 중지 ThreadAbo..
콘솔코드를 윈도우 코드로 변환(3/3) 콘솔 클라이언트 코드를 윈도우 코드로 옮기기 문제점 서버와 클라이언트 일대일 접속 TcpListener.AcceptTcpClient()대기 이벤트 처리 vs 무한 반복 스레드(1/2) 목차 스레드 개요 스레드 생성과 사용 스레드 사용 예 스레드 주요 속성과 메소드 윈도우 네트워크 프로그래밍에 스레드 적용 (에코 서버와 클라이언트) 스레드의 개요 프로세스와 스레드 스레드는 운영체제의 자원이며 프로그램안에서 독립적으로 실행할 수 잇는 것 ( 멀티 태스킹 운영체제 ) 프로그램의 구성? 코드와 데이터 프로세스 ? 운영체제로부터 할당 받은 메모리에 코드와 데이터를 저장 및 CPU를 할당 받아 실행 가능한 상태 (== 메모리에 올라간상태) 메모리에 올리기위해서 운영체제의 도움..
콘솔코드를 윈도우 코드로 변환(2/3) 데이터 전송 순서 결정 데이터 전송 순서와 반복문 무한 루프의 문제점 : 다른 이벤트 처리를 할 수없다. 윈도우 프로그래밍에서 무한루프의 처리방법 : 스레드 : thread 해제 대상 BinaryReader /BinaryWriter NetworkorStream TcpClient TcpListener.Stop(); 전부 ==> FormClosing() 호출할때
콘솔코드를 윈도우 코드로 변환(1/3) 목차 콘솔 서버 코드를 윈도우 서버 코드로 옮기기 콘솔 클라이언트 코드를 윈도우 클라이언트 코드로 옮기기 문제점 살펴보기 콘솔 서버 코드를 윈도우 서버 코드로 옮기기 폼 디자인은 코드 설계이다. 폼디자인에 따라서 윈도우코드가 결정된다. 콘솔형 프로그래밍 특징 : 순차적인 논리 윈도우 프로그래밍 특징 : 이벤트에 따른 반응 논리 폼디자인은 코드량을 결정 기능에 따라 폼 디자인과 컨트롤 수가 결정 서버 ip 출력, 접속 시작 버튼, 클라이언트 ip 주소 출력, 송수신 시작 서버 Ip 주소 출력 호스트명 알아내기 Dns.GetHostName(); public static string GetHostName() // static : 정적 함수! 객체를 생성하지않는다. 호스트..
네트워크 클래스 (5/5) Stream 입출력에 대해 이진파일 / BinaryWriter, BinaryReader 텍스트 파일 / StreamReader, StreamWriter 공통점 0과 1로 된 데이터로 구성 차이점 임의의 데이터형 해석 -> 이진 1바이트 단위형 해석 -> 일반 BinaryWriter 역할 NetworkStream을 통해 임의의 데이터 전송 기본 0,1 Systema.I.O namespace 선언 필요 생성자 : 연결할 NetworkStream 설정 public BinaryWriter( Stream output )using (BinaryWriter bw = new BinaryWriter(ns))… BinaryWirter.Write() --> 가장 중요!!! 임의의 데이터형 쓰기 p..
네트워크 클래스 (4/5) 네트워크 전송 클래스 네트워크 프로그램을 하는 목적 : 아두이노 제어보드에 네트워크에 농업을 자동화하는 방법을 찾기위해 c# 네트워크를 배우는 중이다. NetworkStream 역할 : TCP 연결에서 데이터 송수신 스트림 스트림에서 데이터 쓰기 public override void Write( byte[] buffer, int offset, int size ) 리턴값 : 읽은 바이트 수 , 리턴 값이 0 이면 읽을 데이터가 없음 NetworkStream.CanRead, NetworkStream.CanWrite 스트림에데이터 읽고 쓸 수 있는지 확인 public override bool CanRead {get; } public override bool CanWrite {get;..
네트워크 클래스 (2/5) IPHostEntry 역할 도메인명과 ip주소를 저장하는 컨테이너 컨테이너 : 다수의 개수를 저장할 수있다. Dns와 연결하여 사용 IPHostEntry HostInfo = Dns.GetHostEntry("www.naver.com"); IPHostEntry 도메인명과 연결된다. public IPAddress[] AddressList {get; set;} 다수의 ip주소 저장 -> IPAddress[] 배열이다! iphostEntry와 dns를 이용하면 다수의 ipAddress를 얻어낼 수있다. public string HostName {get; set;} 호스트명을 설정 또는 얻기 실제 dns 가 뜨는 컴퓨터이름(호스트명)을 얻어올 수있다. IPEndPoint 역할 목적지 ip..
네트워크 클래스 (3/5) 네트워크 연결 클래스 ( TcpListener , TcpClient, UdpClient ) 연결 클래스 크게 두가지로 나눈다 TCP와 UDP 구분 TcpListener : 서버에서 사용 TcpClient : 서버 + 클라이언트 둘다 사용 udpClient : 서버 클라 모두 사용 기본적으로 둘다 socket기반이다. namespace 선언 using System.Net.Sockets 미리 위의 네임스페이스를 선언해줘야 socket사용가능 TCP-TcpListener/TcpClient udp보다 tcp에 관심을 둘게 더 많다 왜냐하면 udp 보다 데이터에 대한 신뢰도가 포함되어있고 현재는 인터넷 속도가 매우빠르기때문에 tcp를 써도 많이 느리게 느껴지지 않아서 tcp를 많이 사용..
2강 ( 네트워크 클래스 1/5 ) 목차 네트워크 클래스 지도 보기 정보 클래스 연결 클래스 전송 클래스 네트워크 클래스 지도보기 개요 : 정보 클래스 IPAddress, Dns, IPHostEntry, IPEndPoint ip주소가 컴퓨터와 컴퓨터를 연결하기 위해서 필수 고유 유일한 번호 Dns : DomainNameService , ex )www.nowcampus.co.kr "127.0.0.1" ip 주소 설정 , 문자열을 IP로 변환해준다. 연결클래스에서 요구하는 클래스 단위이다. 정보가 결정되었으니 Parse를통해 연결클래스에 셋팅 정적 메소드라서 객체를 생성할 필요 없다. public override string ToString() 내부 저장된 ip주소 반환 ( 스트링형으로 ) Dns 역할 : ..
1강 ( 네트워크 기본 구조와 원리 2/2 ) TCP 서버의 기본구조 크게 3개 : (1) 대기 상태 -> (2) 접속요청 -> (3) 데이터 전송 (1) 대기 상태 : 서버는 클라이언트 요청이 오기전까지 대기한다. (2) 접속요청 : 클라이언트가 서버에 접속요청을 요구하고 서버에서 socket이 생성된다. (3) 데이터 전송 : 접속 요청이 받아드려지면 데이터 전송이 받아드려지며 시작된다. TCP 서버와 클래스 TcpListener 연결과 TcpClient객체 생성 접속될 클라이언트를 받을 준비를 한다. 대기상태를 만들어줌 , TcpClient : 서버도 사용하고 클라이언트도 사용한다 마치 소켓?같다? 서버는 TCpListener , TcpClient 두개만들고 클라는 TcpClient만 만들면된다. ..
네트워크 기본 구조와 원리(1/2)미리보기29:00 예제 코드 : https://github.com/HwangSaw/CSharpNetwork/tree/25d817dac1ac5c7b26cf9db774e1438948d5d8fe ○ 1강 네트워크 기본 구조와 원리 (1/2) § 목차 § 서버와 클라이언트를 바로 알자 § TCP/IP서버와 클라이언트 □ TCP서버와 클라이언트 □ UDP 서버와 클라이언트 § [ 1.1 서버와 클라이언트 ] ○ 네트워크의 기본개념 ▪ 프로토콜 (protocol ) : 인터넷 상에서 컴퓨터 간의 데이터를 주고 받기 위한 약속된 형식 -> 통신 규약 ▪ OSI 7 계층 :컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 구분하여 규정 -> 프로토콜을 기능별로 구분 - 응용 프로그램 ..