소켓 프로그래밍.  프로젝트 생성 ◦ Visual Studio 2008 ◦ Visual C# 2008 Express Edition ◦ 통합 개발 환경 (IDE)  서버 소켓  클라이언트 소켓  소켓 프로그램 실행  추적과 디버깅  소켓 클래스 메서드  소켓.

Slides:



Advertisements
Similar presentations
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
Advertisements

CHAP 22. 블루투스.
Socket Programming 소개.
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
컴퓨터프로그래밍 1주차실습자료 Visual Studio 2005 사용법 익히기.
김태원 심재일 김상래 강신택. 김태원 심재일 김상래 강신택 인터넷 통신망의 정보를 제공하는 서비스 인터넷의 자원 및 정보는 NIC가 관리 IP주소 또는 도메인으로 정보 검색 이용자 및 통신망 관한 정보를 제공.
Power Java 제3장 이클립스 사용하기.
인공지능실험실 석사 2학기 이희재 TCP/IP Socket Programming… 제 11장 프로세스간 통신 인공지능실험실 석사 2학기 이희재
최윤정 Java 프로그래밍 클래스 상속 최윤정
Ch.07-5 xml-rpc 사용하기 김상엽.
Network Lab. Young-Chul Hwang
소켓 모델 주소 지정 in_addr_t inet_addr(const char *ip_address) 연결 지향 모델 (TCP)
Chapter 03. 소켓 주소 구조체 다루기.
Chapter 2 Socket Programming
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
제 14장 Multicast & Broadcast
Department of Computer Engineering
Department of Computer Engineering
Linux서버를 이용한 채팅프로그램 지도 교수님 : 이형원 교수님 이 름 : 이 은 영 학 번 :
Visual Basic .NET 처음 사용하기.
1. C++ 시작하기.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
FTP 프로그램 채계화 박재은 박수민.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
Chapter 06. UDP 서버/클라이언트.
TCP/IP 응용 프로그램에 적용 가능한 다양한 소켓 옵션을 이해하고 활용한다.
NJM Messenger 박상원 박연호.
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
모바일 자바 프로그래밍 JDBC / WAP Ps lab 오민경.
ARP Project 조 충 호 교수님 김 세 진 조교님 조 진 형 변 익 수
WinCE Device Driver 실습 #3
ASP.NET AJAX 비동기 게시판 작성 2007 컴퓨터공학실험( I )
Java의 정석 제 15 장 네트워킹(Networking) Java 정석 남궁성 강의
프로젝트 발표 순서 12/7(수), 팀 별 15분 발표순서 PPT (팀 별 이름, 구현 내용, 결과-그래프 포함) 각 기법당
Chapter 03. 소켓 주소 구조체 다루기.
Socket Address Structure and Byte Ordering Functions
Socket Address Structure and Byte Ordering Functions
10장. 예외처리.
Chapter 5 UDP Socket 소켓 프로그래밍.
Chapter 19 솔라리스 네트워크 관리 Solaris1 . TCP/IP 개요
C#.
Method & library.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
인터넷응용프로그래밍 JavaScript(Intro).
22 장 전송층(Transport Layer)
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
Lesson 2. 기본 데이터형.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
USN(Ubiquitous Sensor Network)
Internet 데이터 전송 목표: 인터넷의 개요 및 기본 내용을 살펴보고 VB에서의 데이터 전송 프로그래밍에 대하여 학습한다. 주요내용 인터넷의 개요 인터넷 데이터 전송 인터넷 프로그래밍 Winsock Client Server 프로그래밍.
ASP.NET AJAX / AJAX Control Toolkit 응용 2008 컴퓨터공학실험( I )
Department of Computer Engineering
컴퓨터 프로그래밍 기초 [01] Visual Studio 설치 및 사용방법
14강. 세션 세션이란? 세션 문법 Lecturer Kim Myoung-Ho Nickname 블스
CHAP 21. 전화, SMS, 주소록.
( Windows Service Application Debugging )
웹(WWW).
Chapter 04. TCP 서버/클라이언트.
01. 분산 파일 시스템의 개요 네트워크에 분산된 파일을 사용자가 쉽게 접근하고 관리할 수 있게 해준다.
세션에 대해 알아보고 HttpSession 에 대해 이해한다 세션 관리에 사용되는 요소들을 살펴본다
9 브라우저 객체 모델.
다자간 채팅프로그램 김형도 허영민
Android -Data Base 윤수진 GyeongSang Univ. IT 1.
바이트 순서 변환 함수 주소 변환 함수 바이트 조작 함수 원격지 호스트 정보를 얻는 함수
Chapter 03. 소켓 주소 구조체 다루기.
Network Lab. Young-Chul Hwang
Completion Port기반의 채팅프로그램
7 생성자 함수.
JAVA 프로그래밍 16장 JNLP.
20 XMLHttpRequest.
Presentation transcript:

소켓 프로그래밍

 프로젝트 생성 ◦ Visual Studio 2008 ◦ Visual C# 2008 Express Edition ◦ 통합 개발 환경 (IDE)  서버 소켓  클라이언트 소켓  소켓 프로그램 실행  추적과 디버깅  소켓 클래스 메서드  소켓 오류  IP 주소

 프로젝트 생성 화면 프로젝트 형식 콘솔 응용 프로그램 프로젝트 이름 저장 위치 솔루션 이름 솔루션 디렉터리 생성 여부

 생성된 프로젝트

 프로젝트 생성 화면 콘솔 응용 프로그램 프로젝트 이름

 생성된 프로젝트

 두 개발환경 모두 비슷한 인터페이스를 제공 ◦ Type List – 네임스페이스, 클래스 ◦ Member List – 선택된 클래스의 멤버들 ◦ Using 지시어 – Method 접근을 용이하게 함

 솔루션 탐색기 (Solution Explorer) ◦ 솔루션 / 프로젝트에 대한 참조, 파일 목록 ◦ 프로젝트에 포함되는 소스코드, 이미지, 설정파일 등  도구 상자 패널 (Toolbox Panel) ◦ GUI 에 필요한 컴포넌트를 제공  속성 패널 (Properties Panel) ◦ GUI 컴포넌트 속성과 이벤트 정보 확인 및 수정 ◦ GUI 컴포넌트 외에도 솔루션 탐색기에 열거된 파일의 속성 정보 확인 및 수정 가능  출력 패널 (Output Panel) ◦ 컴파일 정보에 관한 메시지 출력  오류 목록 패널 (Error List Panel) ◦ 오류에 대한 정보를 요약하여 표시

 Toolbox panel Properties  panel Error List panel   Output panel Solution Explorer  panel

 예제 프로그램 : EchoServer.cs  소켓 생성을 위해 Socket 클래스가 사용됨  Socket 생성자 public Socket( SocketInformation ) public Socket( AddressFamily, SocketType, ProtocolType ) ◦ AddressFamily( 열거형 )  소켓의 주소 지정 방법을 선택 ◦ SocketType( 열거형 )  소켓의 종류를 구분 ◦ ProtocolType( 열거형 )  프로토콜의 종류를 구분

 일반적인 소켓은 통신을 하기 위해 IP 종단점을 필요로 함  IP 종단점의 구성 ◦ IP 주소 ◦ 포트번호  IPEndPoint 클래스 객체를 생성하여 IP 종단점을 정의  IPEndPoint 생성자 public IPEndPoint( long, int )  Long integer 형으로 IP 주소 표현 public IPEndPoint( IPAddress, int )  IPAddress 클래스를 이용하여 IP 주소 표현  IPAddress 클래스는 특수 IP 주소에 대한 열거형 값을 포함하고 있음 ◦ 생성자의 두 번째 인자는 포트번호  0 – 의 범위

 IPAddress 특수 IP 주소 FieldDescriptionVersion IPAddress.AnyListen for every interfaceIPv4 IPAddress.BroadcastBroadcast addressIPv4 IPAddress.IPv6AnyListen for every interfaceIPv6 IPAddress.IPv6LoopbackLoopback addressIPv6 IPAddress.IPv6NoneDo not listen for clientIPv6 IPAddress.LoopbackLoopback addressIPv4 IPAddress.NoneDo not listen for clientIPv4

 예제 프로그램 : EchoClient.cs  서버와는 달리 접속할 위치를 알아야 함  Socket, IPEndPoint 객체 생성 ◦ IPEndPoint 객체 생성시 IPAddress 객체를 인자로 할 경우  IPAddress.Parse() 메서드는 문자형 IP 주소 (IPv4, IPv6) 를 인자로 받아서 IPAddress 객체를 반환  서버와 클라이언트가 동일한 호스트에 위치할 경우 루프백 주소 를 이용할 수 있음  포트번호에 연결하는 것은 서버와 동일

 서버 프로젝트와 클라이언트 프로젝트 모두 컴파일 및 빌드를 수행  IDE 또는 명령 프롬프트를 통해 서버를 먼저 실행 후, 클라이언트 실행  방화벽 경고 시 해제

 IDE 를 이용한 프로그램 추적과 디버깅  Locals ( 지역 ), Watch ( 조사식 ) ◦ Locals  디버깅 모드 시에 Locals 를 통해 프로그램 내에서 선언된 변수들의 변경사항을 확인할 수 있음  IDE 에 의해 자동으로 출력됨 ◦ Watch  특정 변수를 사용자가 직접 감시할 수 있음  변수이름을 입력 후 확인 가능

 Locals 창  Watch 창

 특정 시점의 프로세스를 감시하고자 할 때에는 중단점 (Break Point) 를 설정하여 프로그램을 일시 중지할 수 있음  중단점까지의 실행 후 코드 추적을 어떻게 진행해 나갈지에 대한 방법을 선택 ◦ Step Into  현재 라인이 메서드 호출을 포함할 경우 메서드가 정의된 곳으로 이동 ◦ Step Over  메서드가 정의된 곳으로 이동하지 않고 건너뜀 ◦ Step Out  현재 라인이 메서드 정의 내에 포함될 경우 호출한 위치로 복귀  Example : MainProgram.cs ExternalClass.cs

 public void Bind(EndPoint) ◦ 종단점에 소켓을 바인딩  public void Listen(int) ◦ 클라이언트로부터의 접속요청을 대기  public void Connect(EndPoint) ◦ 서버에 접속을 시도  public Socket Accept() ◦ 큐에 대기하고 있는 접속요청을 수락  public int Send(byte[], int, SocketFlags) ◦ 데이터 송신 – 보낸 바이트 수를 정수형으로 반환  버퍼 – byte[], 길이 – int, 데이터를 보낼 방법 - SocketFlags  public int Receive(byte[]) ◦ 데이터 수신 – 받은 바이트 수를 정수형으로 반환  Byte[] 에 수신한 데이터를 저장  public void Close() ◦ 소켓을 닫고 리소스 해제

Socket() Bind() Receive() Send() Close() Socket() Send() Receive() Close() TCP 서버 TCP 클라이언트 Connect() Listen() Accept() 네트워크

 소켓에서의 실행시간 오류  SocketException 예외 발생  SocketException 은 어떤 오류가 발생했는지를 나타내는 ErrorCode 속성을 포함하고 있음  오류코드는 Winsock 2 오류코드와 동일  Example : EchoServerSE.cs EchoClientSE.cs  오류를 처리하기 위해 try-catch 블록 사용

 바이트 정렬 ◦ Big-endian – 최상위 바이트를 가장 높은 주소에 저장 ◦ Little-endian – 최상위 바이트를 가장 낮은 주소에 저장 ◦ Example : LongEndPoint.cs

 바이트 정렬 (byte ordering) ◦ 메모리에 데이터를 저장할 때의 바이트 순서  빅 엔디안 (big-endian), 리틀 엔디안 (little-endian) 0x120x340x560x78 0x560x340x12 빅 엔디안 리틀 엔디안 0x10000x10010x10020x1003                    

 네트워크 애플리케이션에서 바이트 정렬 방식을 고려해야 하는 경우 종단 시스템 라우터 종단 시스템 라우터 데이터 IP 주소 포트 번호 ? ? ? (a) (b) (c)

 네트워크 애플리케이션에서 바이트 정렬 방식을 고려해야 하는 경우 (cont ’ d) ◦ 프로토콜 구현을 위해 필요한 정보  (a) IP 주소  빅 엔디안  (b) 포트 번호  빅 엔디안 ◦ 애플리케이션이 주고 받는 데이터  (c) 빅 엔디안 또는 리틀 엔디안으로 통일  네트워크 바이트 정렬 (network byte ordering) : 빅 엔디안 방식  호스트 바이트 정렬 (host byte ordering) : 시스템이 사용하는 고유한 바이트 정렬 방식 참고

 바이트 정렬 함수 ( 유닉스 호환 )  바이트 정렬 함수 ( 윈속 확장 ) u_short htons (u_short hostshort); // host-to-network-short u_long htonl (u_long hostlong); // host-to-network-long u_short ntohs (u_short netshort); // network-to-host-short u_long ntohl (u_long netlong); // network-to-host-long int WSAHtons (SOCKET s, u_short hostshort, u_short* lpnetshort); int WSAHtonl (SOCKET s, u_long hostlong, u_long* lpnetlong); int WSANtohs (SOCKET s, u_short netshort, u_short* lphostshort); int WSANtohl (SOCKET s, u_long netlong, u_long* lphostlong);

 바이트 정렬 함수 사용 소켓 함수 hton*( ) 소켓 함수에게 넘겨줄 데이터 소켓 함수 ntoh*( ) 애플리케이션이 사용 소켓 함수가 결과로 전달

 Current host IP address ◦ 예제 프로그램 : HostIP.cs  DNS lookup ◦ 예제 프로그램 : IPLookup.cs  Retrieving client’s IP address ◦ 예제 프로그램 : WelcomeServer.cs WelcomeClient.cs