Presentation is loading. Please wait.

Presentation is loading. Please wait.

Python Essential 세미나 1 Socket Programming 발표자 : 임민상 2001. 5. 8( 화 )

Similar presentations


Presentation on theme: "Python Essential 세미나 1 Socket Programming 발표자 : 임민상 2001. 5. 8( 화 )"— Presentation transcript:

1 Python Essential 세미나 1 Socket Programming 발표자 : 임민상 2001. 5. 8( 화 )

2 Python Essential 세미나 2 ● About Socket 소켓 (Socket) 은 1982 년 BSD(Berkeley Software - Distribution) UNIX 4.1 에서 처음 소개 TCP/IP 프로토콜의 프로그래머 인터페이스 존재하는 프로세스들 사이의 대화를 가능하게 하는 프로세스간 상호 통신방식이다 양방향 (bidirectional) 한 컴퓨터 내의 ( 소켓을 사용하는 ) 모든 서버 프로세스는 별도의 포트번호를 갖는 소켓을 갖는다. About Socket 소켓의 유형 About Synchronously 소켓 프로그래밍 절차 예제 - 에코 Socketserver Module 예제 참고할만한 Module 참고자료

3 Python Essential 세미나 3 ● 소켓의 유형 - TCP TCP (Transport Connect Protocol) 가상회선 (Virtual circuit) - 데이터들이 신뢰할 수 있는 방식으로 차례대로 전송되고 복사되지 않는 다. 연결기반 - Client/Server 방식의 통신 가상회선의 디폴트 프로토콜 SOCK_STREAM : 스트림 방식의 소켓 생성 양방향연결에 기초한 바이트 가변길이의 스트림 About Socket 소켓의 유형 About Synchronously 소켓 프로그래밍 절차 예제 - 에코 Socketserver Module 예제 참고할만한 Module 참고자료

4 Python Essential 세미나 4 ● 소켓의 유형 - UDP UDP (User Datagram Protocol) 데이터그램 (Datagram) - 데이터들이 순서없이 신뢰할 수 없는 방식으로 전송된다. 비연결기반 : 전보와 비슷 신뢰성보다 속도가 더 중요한 응용들에서 사용 데이터그램의 디폴트 프로토콜 SOCK_DGRAM : 데이터그램 방식의 소켓 생성 비신뢰적 고정길이의 메시지 About Socket 소켓의 유형 About Synchronously 소켓 프로그래밍 절차 예제 - 에코 Socketserver Module 예제 참고할만한 Module 참고자료

5 Python Essential 세미나 5 ● About Synchronously Synchronously Class 동기적 : 각각의 클라이언트의 request 에 대해서 다음 request 가 시작되기 전에 종료가 되어야 한다 단점 : 각각의 request 가 완료시까지 처리가 오래걸리는 모델에서는 부적합 Asynchronous Class 각각의 클라이언트 request 에 대해서 각각의 process 를 발생시키거나, thread 처리하는 서버 다중 Client 를 처리 About Socket 소켓의 유형 About Synchronously 소켓 프로그래밍 절차 예제 - 에코 Socketserver Module 예제 참고할만한 Module 참고자료

6 Python Essential 세미나 6 ● Synchronously Class TCPServer Internet TCP 프로토콜을 사용, 연속적, 믿을만한 쌍방향 바이트 스트림을 제공 UDPServer Datagrams 를 사용, 접속을 보증하지 않으며 비신뢰성, 고정크기 메시지, 속도는 빠름 UnixStreamServer UNIX 이외의 플랫폼에서는 쓸수 없다. UnixDatagramServer UNIX 이외의 플랫폼에서는 쓸수 없다. About Socket 소켓의 유형 About Synchronously 소켓 프로그래밍 절차 예제 - 에코 Socketserver Module 예제 참고할만한 Module 참고자료

7 Python Essential 세미나 7 ● Asynchronous Class ThreadingTCPServer TheadingUDPServer ThreadingUnixStreamServer ThreadingUnixDatagramServer About Socket 소켓의 유형 About Synchronously 소켓 프로그래밍 절차 예제 - 에코 Socketserver Module 예제 참고할만한 Module 참고자료

8 Python Essential 세미나 8 ● 소켓 프로그래밍 절차 - 서버 측 1. svrsock = socket(AF_INET, SOCK_STREAM) # 스트림 방식의 소켓 객체 생성 2. 소켓을 HOST 컴퓨터의 PORT 에 연결 svrsock.bind(HOST, PORT) 3. 한번에 처리가능한 연결 수 설정. 5 까지 가능 svrsock.listen(1) 4. 클라이언트로부터 소켓 연결이 올 때 까지 대기 conn, addr = svrsock.accept() 5. 클라이언트의 connect 로부터 소켓이 연결되면 svrsock.recv(bufsize) 와 svrsock.send(string) 을 반복하며 데이터 주고 받음 6. 다 마쳤으면 소켓 종료 svrsock.close() About Socket 소켓의 유형 About Synchronously 소켓 프로그래밍 절차 예제 - 에코 Socketserver Module 예제 참고할만한 Module 참고자료

9 Python Essential 세미나 9 ● 소켓 프로그래밍 절차 - 클라이언트 측 1. 소켓 객체 생성 clientsock = socket(AF_INET, SOCK_STREAM) # 스트림 방식의 소켓 객체 생성 2. 소켓을 서버 컴퓨터의 특정 포트에 연결 clientsock.connect(HOST, PORT) 3. 연결 됐으면 데이터 수신 / 전송 clientsock.recv(1024) clientsock.send('Hi!') 4. 다 마쳤으면 소켓 종료 clientsock.close() About Socket 소켓의 유형 About Synchronously 소켓 프로그래밍 절차 예제 - 에코 Socketserver Module 예제 참고할만한 Module 참고자료

10 Python Essential 세미나 10 ● 소켓 프로그래밍 절차 - 서버와 클라이언트 소켓 About Socket 소켓의 유형 About Synchronously 소켓 프로그래밍 절차 예제 - 에코 Socketserver Module 예제 참고할만한 Module 참고자료

11 Python Essential 세미나 11 ● 소켓 프로그래밍 절차 - 데이터그램 소켓 About Socket 소켓의 유형 About Synchronously 소켓 프로그래밍 절차 예제 - 에코 Socketserver Module 예제 참고할만한 Module 참고자료

12 Python Essential 세미나 12 ● 에코 - 서버 프로그램 from socket import * HOST = '' # localhost 를 의미하는 심볼릭 이름 PORT = 50007 # 임의의 사용가능한 안쓰는 포트 s = socket(AF_INET, SOCK_STREAM) s.bind((HOST, PORT)) s.listen(1) conn, addr = s.accept() # 클라이언트에서 연결 요청이 올 때 까지 대기 print 'Connected by', addr while 1: data = conn.recv(1024) if not data: break conn.send(data) conn.close() About Socket 소켓의 유형 About Synchronously 소켓 프로그래밍 절차 예제 - 에코 Socketserver Module 예제 참고할만한 Module 참고자료

13 Python Essential 세미나 13 ● 에코 - 클라이언트 프로그램 from socket import * HOST = 'localhost’ # host name 현재는 한 컴퓨터 내에서 사용 PORT = 50007 # 서버와 같은 포트번호를 써야 함 s = socket(AF_INET, SOCK_STREAM) s.connect(HOST, PORT) s.send('Hello, world') data = s.recv(1024) s.close() print 'Received', `data` About Socket 소켓의 유형 About Synchronously 소켓 프로그래밍 절차 예제 - 에코 Socketserver Module 예제 참고할만한 Module 참고자료

14 Python Essential 세미나 14 ● 에코 - 실행결과 서버측 출력 예 Connected by ('127.0.0.1', 2984) 클라이언트측 출력 예 Received 'Hello, world' About Socket 소켓의 유형 About Synchronously 소켓 프로그래밍 절차 예제 - 에코 Socketserver Module 예제 참고할만한 Module 참고자료

15 Python Essential 세미나 15 ● Socketserver Module 예제 1: from SocketServer import * 2: HOST = ('',8001) 3: ClientList = [] 4: class MyServer(BaseRequestHandler): 5: def handle(self): 6: conn = self.request 7: if conn: 8: peername = conn.getpeername() 9: ClientList.append(peername) 10: print "Requested by ",peername 11: try: 12: cmd = raw_input(">> ") 13: while cmd: About Socket 소켓의 유형 About Synchronously 소켓 프로그래밍 절차 예제 - 에코 Socketserver Module 예제 참고할만한 Module 참고자료

16 Python Essential 세미나 16 ● Socketserver Module 예제 14: if cmd == 'ls': 15: print "== Connected Client Lists ==" 16: print ClientList 17: cmd = raw_input(">> ") 18: except: 19: print "Socket error occured" 20: return 21: if __name__ == '__main__': 22: my_server = ThreadingTCPServer(HOST,MyServer) 23: my_server.serve_forever() About Socket 소켓의 유형 About Synchronously 소켓 프로그래밍 절차 예제 - 에코 Socketserver Module 예제 참고할만한 Module 참고자료

17 Python Essential 세미나 17 ● Socketserver Module 예제 - 보충설명 def handle(self) : # handle() 메소드 재정의 request 에 대해서 처리해주는 역할 ThreadingTCPServer(HOST,MyServer) Host 는 (IP, PORT) 로 이루어져 있음 MyServer 는 request handler IP 의 `` 의미 : Local Host my_server.serve_forever() 서버가 실제로 Client 의 request 를 accept 할 수 있도록 호출 - handle_request() 는 하나의 request 를 accept - serve_forever() 는 많은 request 를 accept About Socket 소켓의 유형 About Synchronously 소켓 프로그래밍 절차 예제 - 에코 Socketserver Module 예제 참고할만한 Module 참고자료

18 Python Essential 세미나 18 ● 참고할만한 Module FTP(File Transfer Protocol) 프로토콜 - ftplib 모듈이 FTP 클래스를 지원 - 자세한 정보는 인터넷 RFC 959 를 참조 Telnet - telnetlib 모듈에 Telnet 프로토콜을 구현하는 Telnet 클래스를 지원 - 자세한 정보는 인터넷 RFC 854 를 참조 About Socket 소켓의 유형 About Synchronously 소켓 프로그래밍 절차 예제 - 에코 Socketserver Module 예제 참고할만한 Module 참고자료

19 Python Essential 세미나 19 ● 참고자료 소켓 (Socket) 프로그래밍 - 이강성, 2000.3.23 Python 으로 네트워크서버 프로그램 만들기 - 서준원, 2000.7.28 Socket API 보고서 - 임민상, 1999.5.3 About Socket 소켓의 유형 About Synchronously 소켓 프로그래밍 절차 예제 - 에코 Socketserver Module 예제 참고할만한 Module 참고자료


Download ppt "Python Essential 세미나 1 Socket Programming 발표자 : 임민상 2001. 5. 8( 화 )"

Similar presentations


Ads by Google