콘솔코드를 윈도우 코드로 변환(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 계층 :컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 구분하여 규정 -> 프로토콜을 기능별로 구분 - 응용 프로그램 ..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtefKz%2FbtrbW1Nts6e%2Fj7UY9oRutIm6ATQ1q5fuh1%2Fimg.png)
결론만 볼라면 common 프로젝트 pidl 파일에 pidl 경로 설정시 아래처럼 따옴표로 묶으면된다. ex ) "C:\Program Files (x86)\Nettention\ProudNet\util\PIDL.exe" "%(FullPath)" –cpp 아그리고 PIDL 파일에 내용이 하나도 없으면 또 C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(241,5): warning MSB8065: "Simple.PIDL" 항목에 대한 사용자 지정 빌드에 성공했지만 지정한 출력 "c:\visualstudioproject\simple\common\simpl..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fmcx7g%2Fbtrbe5KSsdo%2FZIKQOekY4o2OU7stknuljk%2Fimg.png)
아직 전날 문제도 못고쳤지만 일단 오늘은 샘플예제 실행이라도 해보자 해서 실행했더니... libcrypto-1_1-x64.dll 이(가) 없어 코드 실행을 진행할 수 없습니다. 프로그램을 다시 설치하면 이 문제가 해겨로딜 수 있습니다. 혹시 프라우드넷 문제인줄알고 다시 설치했는데 그건 문제가 아니였음 검색해보니 openSSL 에 포함된 dll 이라고해서 open SSL 설치하니 샘플예제는 실행됨 output 안나오는건 더봐야겠다.
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAuHPl%2FbtraVp4ja8k%2FKyVIkkCEhzSOqtqkXDwKw0%2Fimg.png)
- 프라우드넷 따라하기 [ 프라우드넷 경로설정 ] server 속성페이지 : 링커 : 추가라이브러리디렉터리 : ..\..\Engine\ProudNet\lib\Debug server프로젝트 속성 : 링커 > 입력>추가종속성: ProudNetServer.lib, ProudNetClient.lib, common_d.lib 프로젝트 > 속성 페이지 > C/C++ > 일반 > 추가포함 디렉터리 :E:\Program Files %28x86%29\Nettention\ProudNet\include;%(AdditionalIncludeDirectories) 프로젝트 >속성페이지 > 링커 > 일반 > 추가라이브러리 디렉터리 : E:\Program Files %28x86%29\Nettention\ProudNet\lib\x64..
https://www.screencast.com/users/Nettention/playlists/New%20Playlist?mediaSetId=3032e591-e175-49c5-aaa1-7c86c8622d41 Social game programming footage 1 client to server connection Shared from Screencast.com www.screencast.com 기초부터 따라하기 좋다. 한국어로 되어있어서 좋고 유튜브 프라우드넷 강의와 달리 말로 설명하면서 해줘서 좋다. 프라우드넷 프로젝트 설정에서 막혔는데 사수님께 여쭤보고 해결 Microsoft Visual Studio Community 2019 버전 16.10.0 서버 프라우드넷 설정부분까지 : https://g..
[ 3차시 21-01-05 화요일 ] [필기- 소프트웨어설계] 요구사항 확인 B 요구사항 확인 요구사항 확인 분석모델에 대해 확인하고 현행 시스템에 대해 분석 요구사항을 보고 SW개발을 한다. 요구사항은 모두 문서화를 할것이고 요구사항을 분석하기위한 모델이 있을것이고 요구사항 분석 모델을 확인하고 현행 시스템을 분석한다. 현행 시스템 분석 지식 산업분야 플랫폼 프로젝트 환경 플랫폼 기능 , 플랫폼 성능 가상화 클라우드 기술 환경분석 //내부 외부 환경분석 운영체제 // 구성과 관리하는법 저장장치 // 구성과 관리하는법 네트워크 // 관리하는법 DBMS // 기술 가상화 // 기술 // 현행시스템분석이 필요한 이유 개발하고자하는 SW가 현재 시스템에 잘 동작하기 위해서는 소프트웨어에 대한 이해가 필요 현행..
[필기- 소프트웨어설계] 요구사항확인 A 제 1과목 소프트웨어 설계 요구사항 확인 소프트웨어 생명주기 폭포수형 모형 프로토 타입 모형 나선형 모형 애자일 소프트웨어 생명주기가 꼭 필요한가? 하는 이유: 비용산정 개발계획의 밑받침 골격제공해서 편하다 표준화를 가능하게 한다. 프로젝트 관리를 용이하게 해준다. 폭포수형 모형 폭포수 모델을 따르기 위해서는 완전히 순차적으로 한 단계, 한 단계를 진행해 나가야한다. 폭포수 모델은 전 단계가 수행되어 완료되기 전에는 다음 단계로 진행할 수 없도록 제한한다. -> 계획 -> 요구 분석 - 설계 -> 구현 -> 테스트 -> 유지보수 계획 : 타당성이 있는지 확인하는 과정 , 비용 자원 기간 산정 요구 분석 : 의뢰한 사람들이 요구한걸 문서화하는 과정 설계 : 프로그램..
2021년을 맞아서 자격증을 따고 싶어서 인강을 듣기시작했다. 경기도에서 제공하는 무료 인강이 있어서 들어보려고 한다. https://www.dream.go.kr/dream/lectureRoom/goLectureRoom.do?menuSeq=226&courseSeq=11092&trnTypeCd=TT001&trainingReqSeq=100240179 로그인 - 온라인취업지원서비스 꿈날개 로그인 중입니다 잠시만 기다려주세요. www.dream.go.kr 여기서 온라인 강의에 들어가서 자격증을 선택후 정보처리기사를 선택하면 인강을 들을 수 있다. 그리고 강사님 말하시는 속도가 좀 느리신데 크롬 확장프로그램써서 1.5배속으로 보면된다. chrome.google.com/webstore/detail/video-spe..
- WIFEXITED : Wait If Exited(종료됨) : - WEXITSTATUS : Wait Exit Status :
오늘의 목표 두개! 1. 오늘도 -> 이 블로그https://webnautes.tistory.com/1158 포스팅보고 따라하기 2. 윤성우의 열혈 TCP/I{소켓프로그래밍 의 Chapter 01-2 리눅스 기반 파일 조작하기 공부 저번부터 따라하던건데 역시 용어가 너무 어렵고 생소해서 진도가 안나간다... 오늘은 제발.. 이 챕터를 넘어가자 1. 보다가 오늘도 컴파일 경로가 usr/bin/g++ 을 선택하라는데 저게 무슨의미인지 궁금하지만 저번스터디때 g++ 검색하다가 gnu의 어원까지 갔던 기억이 있어서 그냥 g++ 한줄요약만 찾아볼예정 오근데 아주 명쾌한 gcc과 g++ 의 차이에 대해 적오놓은곳이있다 . https://hsunnystory.tistory.com/112 GCC와 G++의 차이점 GC..