Network Programming Version 2 1 1 TCP UDP














- Slides: 14

Network Programming Version 2. 1



1. 소켓 프로그래밍 개요 TCP와 UDP 전송방식 TCP/IP 프로토콜은 연결 지향방식인 TCP (Transmission Control Protocol)와 비연결 지향방식인 UDP (User Datagram Protocol)로 구성 TCP 방식 UDP 방식 신뢰성 100% 신뢰성 보장 신뢰성 없음 네트워크부하 많음 상대적으로 적음 사용 예) 신뢰성이 요구되는 FTP, Telnet, SMTP, POP 3, HTTP 등에 사용 대용량 미디어 파일 전송 (물리적으로 100% 신뢰할 수 있는 케 이블) TCP방식 소켓프로그래밍 예 IPEnd. Point ipep = new IPEnd. Point (IPAddress. Any, 9999); Socket newsock = new Socket (Address. Family. Inter. Network, Socket. Type. Stream, Protocol. Type. Tcp); Newsock. Bind (ipep); Newsock. Listen(10); Socket client = newsock. Accept (); UDP방식 소켓프로그래밍 예 IPEnd. Point ipep = new IPEnd. Point (IPAddress. Any, 9999); Socket newsock = new Socket (Address. Family. Inter. Network, Socket. Type. Dgram, Protocol. Type. Udp); Newsock. Bind (ipep);


1. 소켓 프로그래밍 개요 사용 예) - 콘솔프로그램 using System; using System. Net; class IPTest { } static void Main(string[] args) { IPAddress ex 1 = IPAddress. Parse(“ 211. 179. 124. 1”); IPAddress ex 2 = IPAddress. Any; IPAddress ex 3 = IPAddress. Broadcast; IPAddress ex 4 = IPAddress. Loopback; IPAddress ex 5 = IPAddress. None; } Console. Write. Line(“{0}={1}”, “ex 1”, ex 1); Console. Write. Line(“{0}={1}”, “ex 2(Any)”, ex 2); Console. Write. Line(“{0}={1}”, “ex 3(Broadcast)”, ex 3); Console. Write. Line(“{0}={1}”, “ex 4(Loopback)”, ex 4); Console. Write. Line(“{0}={1}”, “ex 5(None)”, ex 5);

1. 소켓 프로그래밍 개요 IPEnd. Point 클래스 //IPEnd. Point는 로컬주소를 바인드 하거나 소켓과 원격 주소를 연결할 때 사용. using System; using System. Net; class Ex. IPEnd. Point { static void Main(string[] args) { IPAddress ex = IPAddress. Parse(“ 211. 179. 124. 1”); IPEnd. Point ie = new IPEnd. Point(ex, 8000); Console. Write. Line(“To. String() : {0}”, ie. To. String()); Console. Write. Line(“Address. Family : {0}”, ie. Address. Family); Console. Write. Line(“Address : {0}”, ie. Port); Console. Write. Line(“Max. Port: {0} Min. Port: {1}”, IPEnd. Point. Max. Port, IPEnd. Point. Min. Port); } }

2. 소켓 사용하기 Socket 생성 (System. Net. Sockets) Socket sock = new Socket(Address. Family af, Socket. Type st, Protocol. Type pt; ) Socket. Type Protocol. Type 설 명 Dgram Udp 비 연결 통신(UDP) 통신 Stream Tcp 연결 지향 통신 (TCP) 통신 Raw Icmp ICMP(Internet Control Message Protocol) Raw 패킷 통신

3. Socket 클래스를 이용한 바이트 단위 채팅 프로그램 • Server IPEnd. Point ipep = new IPEnd. Point(IPAddress. Any, 7000); //7000번포트열기 Socket server = new Socket (Address. Family. Inter. Network, Socket. Type. Stream, Protocol. Type. Tcp); server. Bind (ipep); //채팅서버 바인딩 server. Listen (10); // 최대 10개의 클라이언트 접속 대기 Socket client = server. Accept (); // 클라이언트 접속처리 • Client IPEnd. Point ipep = new Ip. End. Point (IPAddress. Parse(ip), 7000); //접속할IP Socket client = new Socket (Address. Family. Inter. Network, Socket. Type. Stream, Protocol. Type. Tcp); client. Connect (ipep); // ip에 해당하는 컴퓨터 7000포트로 접속시도

4. Network. Stream 클래스 이용 문자열 기반 채팅프로그램 • Server IPEnd. Point ipep = new IPEnd. Point (IPAddress. Any, 7000); //7000번포트열기 Socket server = new Socket (Address. Family. Inter. Network, Socket. Type. Stream, Protocol. Type. Tcp); server. Bind (ipep); //채팅서버 바인딩 server. Listen(10); //클라이언트 접속 대기 Socket client = server. Accept (); //클라이언트 접속처리 Network. Stream stream = new Network. Stream (client); //네트워크스트림 Stream. Reader reader = new Stream. Reader (stream); //읽기 스트림 Stream. Writer writer = new Stream. Writer (stream); //쓰기 스트림 string msg = reader. Read. Line (); //상대방이 보낸 메시지 읽어오기 writer. Write. Line (); //상대방에게 문자열단위로 데이터 보내기 writer. Flush (); //버퍼에 있는 내용을 모두 전송

4. Network. Stream 클래스 이용 문자열 기반 채팅프로그램 • Client IPEnd. Point ipep = new Ip. End. Point (IPAddress. Parse(ip), 7000); //접속할IP Socket client = new Socket (Address. Family. Inter. Network, Socket. Type. Stream, Protocol. Type. Tcp); client. Connect (ipep) ; //ip에 해당하는 컴퓨터 7000포트로 접속시도 Network. Stream stream = new Network. Stream (client); //네트워크스트림 Stream. Reader reader = new Stream. Reader (stream); //읽기스트림 Stream. Writer writer = new Stream. Writer (stream); //쓰기 스트림 string msg = reader. Read. Line (); //상대방이 보낸 메시지 읽어오기 writer. Write. Line (); //상대방에게 문자열단위로 데이터 보내기 writer. Flush (); //버퍼에 있는 내용을 모두 전송

5. C# 헬퍼 클래스를 이용한 채팅 프로그램 작성 • Server Tcp. Listener server = new Tcp. Listener(7000); //7000번 포트 열기 server. Start(); //서버프로그램 실행 Tcp. Client client = server. Accept. Tcp. Client(); //클라이언트 접속대기 Network. Stream stream = client. Get. Stream(); Stream. Reader reader = new Stream. Reader(stream); Stream. Writer writer = new Stream. Writer(stream); string msg = reader. Read. Line(); writer. Write. Line(); writer. Flush(); • Client Tcp. Client client = new Tcp. Client(ip, 7000); Network. Stream stream = client. Get. Stream(); Stream. Reader reader = new Stream. Reader(stream); Stream. Writer writer = new Stream. Writer(stream); string msg = reader. Read. Line(); writer. Write. Line(); writer. Flush();

