430 likes | 610 Views
2014 ITA 8 월 강의. 메모리 관리 , 파일 정대진 (2014.08.13). C Programming -8 일차 -. 목차. 복습 파일입출력 TCP 프로그램 예제. 복습 (1). 메모리관리 동적으로 메모리 할당 Heap 영역에 할당 stdlib.h 헤더파일 malloc () 함수 사용 void* 형이 반환이므로 사용하는 포인터형으로 캐스팅 free() 함수 메모리를 다 사용하고 나면 메모리를 반환 전처리기 컴파일러가 실행하기 전 실행 함수 macro 소괄호 사용의 중요성
E N D
2014 ITA8월 강의 메모리 관리, 파일정대진(2014.08.13) C Programming -8일차-
목차 복습 파일입출력 TCP프로그램 예제
복습 (1) • 메모리관리 • 동적으로 메모리 할당 • Heap 영역에 할당 • stdlib.h헤더파일 • malloc() 함수 사용 • void*형이 반환이므로 사용하는 포인터형으로 캐스팅 • free() 함수 • 메모리를 다 사용하고 나면 메모리를 반환 • 전처리기 • 컴파일러가 실행하기 전 실행 • 함수 macro • 소괄호 사용의 중요성 • 호출의 빈도수가 높을 경우 • 조건부 컴파일 (#if #else #ifdef #elif #endif)
복습 (2) • 구조체 • typdefstruct이름 {내부 변수 선언;}타입이름; • . 연산자를 통해서 내부 변수 접근 • 구조체 포인터 • 구조체 포인터로 본인의 포인터 선언 가능 • 포인터를 통한 내부 변수 접근 • *(구조체변수).내부변수 • 구조체변수->내부변수 • 열거형 • 의미있는 상수/변수 생성
파일 입출력 • 파일 스트림 • 파일로부터의 데이터 입출력을 위해서 스트림 형성이 필수
파일 입출력 fopen() 함수를 통한 파일스트림 생성
파일 입출력 fopen() 함수를 통한 파일스트림 생성
파일 입출력 파일 출력 스트림
파일 입출력 파일 입력 스트림
파일 입출력 파일에 데이터 쓰기
파일 입출력 파일 스트림 닫기 fclose() 함수
파일 입출력 파일에서 데이터 읽기
파일 입출력 파일 스트림 (파일 개방 모드) 구분
파일 입출력 • Read / Write • + : 읽기, 쓰기 모두 가능 • a : 덧붙여 쓰기 가능
파일 입출력 Text / Binary
파일 입출력 파일개방 모드 조합
파일 입출력 • 왜 text 모드가 존재하는가!? • ‘\n’ : 개행 • 개행을 표시하는 방법이 운영체제마다 다름 • 개행 정보를 정확히 저장하기 위해서 운영체제에 맞게 ‘\n’을 변환 시켜서 저장해야 함 • Text 모드에서는 이것이 자동으로 이뤄짐
파일 입출력 파일 입출력 함수
파일 입출력 파일 스트림
파일 입출력 파일 복사 프로그램 - 문자단위
파일 입출력 파일 복사 프로그램 - 문자열단위
파일 입출력 바이너리 데이터 입출력 fread()
파일 입출력 바이너리 데이터 입출력 fwrite()
파일 입출력 바이너리 파일 복사 프로그램
파일 입출력 파일 서식 입출력
파일 입출력 구조체의 파일 입출력
파일 입출력 • 파일 위치 지시자 • 파일 입출력 관련 함수(fputs, fread, fwrite등등)가 호출될 때 마다 파일 우치 지시자의 참조 위치 변경
파일 입출력 파일 위치 지시자의 이동 fseek()
파일 입출력 fseek() 함수 호출 예
TCP 소켓 프로그래밍 • TCP? • 인터넷의 transport layer • TCP • Transmission Control Protocol • 패킷을 확실하게 전송 (전송, 실패 여부를 알 수 있음) • 상대적으로만 느릴 뿐 빠름 • UDP • User Datagram Protocol • 패킷이 도착했는지 보장이 없음 • 빠름
TCP 소켓 프로그래밍 • Server • 서비스를 제공하는 측 • Client • 서비스를 제공받는 측 • Server-Client • 서버는 클라이언트의 접속을 기다리고 있음
TCP 소켓 프로그래밍 • IP 주소 • XXX.XXX.XXX.XXX • IPv4 의 주소 시스템 • 사람들의 집주소와 유사한 개념 • Port # • 프로세스를 지칭할 수 있는 번호 • 집주소의 수령인과 유사한 개념
TCP 소켓 프로그래밍 • TCP 프로그래밍을 하기 위해 필요한 정보 • 통신에 사용할 프로토콜 (우리는 TCP) • 자신의 IP주소 • 자신의 Port# • 상대방의 IP주소 • 상대방의 Port#
TCP 소켓 프로그래밍 • 우리가 만들 프로그램 • Echo server / client • 서버에 클라이언트 접속 • 클라이언트에서 메시지 전송 • 서버에서 클라이언트의 메시지를 그대로 다시 클라이언트로 전송 • 클라이언트에서 받은 메시지를 화면에 출력
TCP 소켓 프로그래밍 우리가 만들 프로그램
TCP 소켓 프로그래밍 (서버) Header 및 lib추가
TCP 소켓 프로그래밍 (서버) 소켓 초기화
TCP 소켓 프로그래밍 (서버) • Bind & Listen & Accept • Socket과 컴퓨터의 주소와 연결 • 클라이언트의 연결을 기다림 • 연결을 수락함
TCP 소켓 프로그래밍 (서버) 클라이언트와 데이터 통신 & 종료
TCP 소켓 프로그래밍 (클라이언트) Header 및 lib추가
TCP 소켓 프로그래밍 (클라이언트) 소켓 초기화 및 connect
TCP 소켓 프로그래밍 (클라이언트) • 연결 후 내용들 • 문자열 입력 • 엔터 제거 • 데이터 전송 • 데이터 수신 • 수신데이터 출력 • 반복~반복~
TCP 소켓 프로그래밍 실행 결과