View
59
Download
0
Category
Preview:
DESCRIPTION
Network Programming Version 2.1. 학습목표. 소켓 프로그래밍의 개념을 이해한다 . 소켓을 사용하여 네트워크 프로그램을 구현할 수 있다. 1. 소켓 프로그래밍 개요. TCP/IP 프로토콜계층. TCP 응용프로그램. FTP, HTTP, Telnet, SMTP. UDP 응용프로그램. NFS, TFTP. 응용계층. 트랜스포트 계층. TCP. UDP. RARP. ARP. IP. ICMP. 인터넷계층. Hardware Interface. 네트워크 액세스계층. - PowerPoint PPT Presentation
Citation preview
Network Network
ProgrammingProgrammingVersion 2.1Version 2.1
학습목표
소켓 프로그래밍의 개념을 이해한다 .
소켓을 사용하여 네트워크 프로그램을 구현할 수 있다 .
응용계층
트랜스포트계층
인터넷계층
네트워크액세스계층
TCP응용프로그램
FTP, HTTP, Telnet, SMTP
UDP응용프로그램
NFS,TFTP
TCP UDP
RARP ARP IP ICMP
HardwareInterface
응용계층 (Application): 응용프로그램계층 , Telnet, FTP, SMTP, HTTP 등 전송방법 규정트랜스포트계층 (Transport) : 네트워크 종단 간 데이터전송을 지원하는 계층 (TCP/UDP 방식 )
인터넷계층 (Internetwork) : 인터넷 layer 로 불리며 IP,ICMP,ARP 등의 프로토콜로 구성네트워크 액세스계층 (Network Interface) : 데이터링크 레이어라고 불리며 , IEEE 802.2,ATM, X25 등의 전송방식을 포함
TCP/IP 프로토콜계층1. 소켓 프로그래밍 개요
TCP 와 UDP 전송방식TCP/IP 프로토콜은 연결 지향방식인 TCP (Transmission Control Protocol) 와 비연결 지향방식인 UDP (User Datagram Protocol) 로 구성
신뢰성 100% 신뢰성 보장 신뢰성 없음
네트워크부하 많음 상대적으로 적음
사용 예 ) 신뢰성이 요구되는 FTP, Telnet, SMTP, POP3, HTTP 등에 사용
대용량 미디어 파일 전송( 물리적으로 100% 신뢰할 수 있는 케이블 )
TCP 방식 UDP 방식
TCP 방식 소켓프로그래밍 예
IPEndPoint ipep = new IPEndPoint (IPAddress.Any, 9999);Socket newsock = new Socket (AddressFamily.InterNetwork,SocketType.Stream,
ProtocolType.Tcp);Newsock.Bind (ipep);Newsock.Listen(10);Socket client = newsock.Accept ();
UDP 방식 소켓프로그래밍 예
IPEndPoint ipep = new IPEndPoint (IPAddress.Any, 9999);Socket newsock = new Socket (AddressFamily.InterNetwork,SocketType.Dgram,
ProtocolType.Udp);Newsock.Bind (ipep);
1. 소켓 프로그래밍 개요
System.Net 네임스페이스
IP 주소관련 클래스
IPAddress IP 주소를 나타내는 클래스
IPHostEntry 하나의 호스트에 대한 상세 정보를 제공하는 클래스
Dns 호스트 이름을 IP 주소로 변환할 때 사용하는 클래스
IPEndPoint IP 주소와 포트로 네트워크 종단점 정보를 가져오는 클래스
클래스 설 명
IPAddress 클래스
IPAddress 클래스는 주로 맴버메소드인 Parse() 를 이용해 IP 주소를 문자열 형태로 입력 ex)IPAddress addr = IPAddress.Parse(“192.168.0.1”);
네 개의 예약필드를 포함하고 있음 .
Any 로컬시스템에서 사용할 수 있는 IP 주소를 나타낼 때
Broadcast 로컬 네트워크의 IP 브로드캐스트 주소를 나타낼 때
Loopback 시스템의 루프백 주소를 나타낼 때
None 시스템에 네트워크 인터페이스가 없음을 나타낼 때
예약 필드명 설 명
1. 소켓 프로그래밍 개요
1. 소켓 프로그래밍 개요
using System;using System.Net;
class IPTest{
static void Main(string[] args){ IPAddress ex1 = IPAddress.Parse(“211.179.124.1”); IPAddress ex2 = IPAddress.Any; IPAddress ex3 = IPAddress.Broadcast; IPAddress ex4 = IPAddress. Loopback; IPAddress ex5 = IPAddress. None;
Console.WriteLine(“{0}={1}”, “ex1”, ex1); Console.WriteLine(“{0}={1}”, “ex2(Any)”, ex2);
Console.WriteLine(“{0}={1}”, “ex3(Broadcast)”, ex3); Console.WriteLine(“{0}={1}”, “ex4(Loopback)”, ex4); Console.WriteLine(“{0}={1}”, “ex5(None)”, ex5); }
}
사용 예 ) - 콘솔프로그램
1. 소켓 프로그래밍 개요
//IPEndPoint 는 로컬주소를 바인드 하거나 소켓과 원격 주소를 연결할 때 사용 .
using System;using System.Net;
class ExIPEndPoint{
static void Main(string[] args){ IPAddress ex = IPAddress.Parse(“211.179.124.1”); IPEndPoint ie = new IPEndPoint(ex, 8000); Console.WriteLine(“ToString() : {0}”, ie.ToString());
Console.WriteLine(“AddressFamily : {0}”, ie.AddressFamily); Console.WriteLine(“Address : {0}”, ie.Port); Console.WriteLine(“MaxPort:{0} MinPort:{1}”, IPEndPoint.MaxPort,
IPEndPoint.MinPort); }
}
IPEndPoint 클래스
2. 소켓 사용하기
Socket 생성 (System.Net.Sockets)
Socket sock = new Socket(AddressFamily af, SocketType st,
ProtocolType pt;)
Dgram Udp 비 연결 통신 (UDP) 통신
Stream Tcp 연결 지향 통신 (TCP) 통신
Raw Icmp ICMP(Internet Control Message Protocol)
Raw Raw 패킷 통신
ProtocolType 설 명SocketType
3. Socket 클래스를 이용한 바이트 단위 채팅 프로그램
• Server
IPEndPoint ipep = new IPEndPoint(IPAddress.Any,7000); //7000 번포트열기
Socket server = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
server.Bind (ipep); // 채팅서버 바인딩 server.Listen (10); // 최대 10 개의 클라이언트 접속 대기 Socket client = server.Accept (); // 클라이언트 접속처리
• Client
IPEndPoint ipep = new IpEndPoint (IPAddress.Parse(ip), 7000);// 접속할 IP
Socket client = new Socket (AddressFamily.InterNetwork, SocketType.Stream,ProtocolType.Tcp);
client.Connect (ipep); // ip 에 해당하는 컴퓨터 7000 포트로 접속시도
4. NetworkStream 클래스 이용 문자열 기반 채팅프로그램• Server
IPEndPoint ipep = new IPEndPoint (IPAddress.Any,7000); //7000 번포트열기
Socket server = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
server.Bind (ipep); // 채팅서버 바인딩 server.Listen(10); // 클라이언트 접속 대기 Socket client = server.Accept (); // 클라이언트 접속처리 NetworkStream stream = new NetworkStream (client); // 네트워크스트림 StreamReader reader = new StreamReader (stream); // 읽기 스트림 StreamWriter writer = new StreamWriter (stream); // 쓰기 스트림 string msg = reader.ReadLine (); // 상대방이 보낸 메시지 읽어오기 writer.WriteLine (); // 상대방에게 문자열단위로 데이터 보내기 writer.Flush (); // 버퍼에 있는 내용을 모두 전송
4. NetworkStream 클래스 이용 문자열 기반 채팅프로그램
• Client
IPEndPoint ipep = new IpEndPoint (IPAddress.Parse(ip), 7000); // 접속할 IP
Socket client = new Socket (AddressFamily.InterNetwork, SocketType.Stream,ProtocolType.Tcp);
client.Connect (ipep) ; //ip 에 해당하는 컴퓨터 7000 포트로 접속시도
NetworkStream stream = new NetworkStream (client); // 네트워크스트림
StreamReader reader = new StreamReader (stream); // 읽기스트림 StreamWriter writer = new StreamWriter (stream); // 쓰기 스트림
string msg = reader.ReadLine (); // 상대방이 보낸 메시지 읽어오기 writer.WriteLine (); // 상대방에게 문자열단위로 데이터 보내기 writer.Flush (); // 버퍼에 있는 내용을 모두 전송
5. C# 헬퍼 클래스를 이용한 채팅 프로그램 작성
• Server TcpListener server = new TcpListener(7000); //7000 번 포트 열기 server.Start(); // 서버프로그램 실행 TcpClient client = server.AcceptTcpClient(); // 클라이언트 접속대기 NetworkStream stream = client.GetStream(); StreamReader reader = new StreamReader(stream); StreamWriter writer = new StreamWriter(stream); string msg = reader.ReadLine(); writer.WriteLine(); writer.Flush();
• Client TcpClient client = new TcpClient(ip, 7000); NetworkStream stream = client.GetStream();
StreamReader reader = new StreamReader(stream); StreamWriter writer = new StreamWriter(stream);
string msg = reader.ReadLine(); writer.WriteLine(); writer.Flush();
6. 활용 예제
인터넷 웹 브라우저 만들기특정 컴퓨터의 활성화된 포트번호 검사WebInfo ( 웹서버에 GET /index.html HTTP/1.0\r\n\n 전송 )
웹사이트분석 프로그램 (WebRequest/WebResponse)
파일 전송 프로그램 ( 소켓 채팅기반 )CTOC_FILE_TRANS_INFO ( 전송할 파일정보 )
CTOC_FILE_TRANS_YES ( 파일 전송 수락 )
CTOC_FILE_TRANS_NO ( 파일 전송 거부 )
7500 포트이용
이모티콘 채팅 프로그램파일전송 /이모티콘멀티채팅SMTP 프로토콜을 이용한 전자메일
√
√
√
Recommended