1 / 14

Network Programming Version 2.1

Network Programming Version 2.1. 학습목표. 소켓 프로그래밍의 개념을 이해한다 . 소켓을 사용하여 네트워크 프로그램을 구현할 수 있다. 1. 소켓 프로그래밍 개요. TCP/IP 프로토콜계층. TCP 응용프로그램. FTP, HTTP, Telnet, SMTP. UDP 응용프로그램. NFS, TFTP. 응용계층. 트랜스포트 계층. TCP. UDP. RARP. ARP. IP. ICMP. 인터넷계층. Hardware Interface. 네트워크 액세스계층.

helki
Download Presentation

Network Programming Version 2.1

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Network Programming Version 2.1

  2. 학습목표 • 소켓 프로그래밍의 개념을 이해한다. • 소켓을 사용하여 네트워크 프로그램을 구현할 수 있다.

  3. 1. 소켓 프로그래밍 개요 TCP/IP 프로토콜계층 TCP 응용프로그램 FTP, HTTP, Telnet, SMTP UDP 응용프로그램 NFS, TFTP 응용계층 트랜스포트 계층 TCP UDP RARP ARP IP ICMP 인터넷계층 Hardware Interface 네트워크 액세스계층 응용계층(Application): 응용프로그램계층, Telnet, FTP, SMTP, HTTP 등 전송방법 규정 트랜스포트계층(Transport) : 네트워크 종단 간 데이터전송을 지원하는 계층(TCP/UDP방식) 인터넷계층(Internetwork) : 인터넷layer로 불리며 IP,ICMP,ARP등의 프로토콜로 구성 네트워크 액세스계층(Network Interface) : 데이터링크 레이어라고 불리며, IEEE 802.2,ATM, X25등의 전송방식을 포함

  4. 1. 소켓 프로그래밍 개요 • TCP와 UDP 전송방식 • TCP/IP 프로토콜은 연결 지향방식인 TCP (Transmission Control Protocol)와 비연결 지향방식인 UDP (User Datagram Protocol)로 구성 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);

  5. 1. 소켓 프로그래밍 개요 System.Net 네임스페이스 IP 주소관련 클래스 클래스 설 명 IPAddress 클래스 IPAddress 클래스는 주로 맴버메소드인 Parse()를 이용해 IP주소를 문자열 형태로 입력 ex)IPAddress addr = IPAddress.Parse(“192.168.0.1”); 네 개의 예약필드를 포함하고 있음. 예약 필드명 설 명

  6. 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); } }

  7. 1. 소켓 프로그래밍 개요 IPEndPoint 클래스 //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); } }

  8. 2. 소켓 사용하기 • Socket 생성 (System.Net.Sockets) Socket sock = new Socket(AddressFamily af, SocketType st, ProtocolType pt;) SocketType ProtocolType 설 명

  9. 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포트로 접속시도

  10. 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 (); //버퍼에 있는 내용을 모두 전송

  11. 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 (); //버퍼에 있는 내용을 모두 전송

  12. 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();

  13. 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 프로토콜을 이용한 전자메일 √ √

More Related