Microsoft PowerPoint PythonGUI-socket

Similar documents
Microsoft PowerPoint PythonGUI-network

<4D F736F F F696E74202D E20B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D62E >

Microsoft PowerPoint - Lecture_Note_5.ppt [Compatibility Mode]

The Pocket Guide to TCP/IP Sockets: C Version

PowerPoint 프레젠테이션

2009년 상반기 사업계획

제1장 Unix란 무엇인가?

Microsoft PowerPoint - Supplement-03-TCP Programming.ppt [호환 모드]

The Pocket Guide to TCP/IP Sockets: C Version

Microsoft PowerPoint - 04-UDP Programming.ppt

Microsoft PowerPoint - 03-TCP Programming.ppt

PowerPoint 프레젠테이션

The Pocket Guide to TCP/IP Sockets: C Version

<4D F736F F F696E74202D20B3D7C6AEBFF6C5A9C7C1B7CEB1D7B7A1B9D65F FBCD2C4CF5FC3A4C6C35FBFA1C4DA2E BC8A3C8A

The Pocket Guide to TCP/IP Sockets: C Version

Microsoft PowerPoint - Supplement-02-Socket Overview.ppt [호환 모드]

본 강의에 들어가기 전

<4D F736F F F696E74202D20C1A63235C0E520B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D628B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

Microsoft PowerPoint - 12 ¼ÒÄÏÀ» ÀÌ¿ëÇÑ Åë½Å 1.ppt

Microsoft PowerPoint - [EEL2] Lab10.pptx

슬라이드 1

본 강의에 들어가기 전

vi 사용법

Windows 8에서 BioStar 1 설치하기

PowerPoint Presentation

16장

학습목표 네트워크개요 TCP PORT URL/InetAddress Socket/TCP 을이용한네트워크 2

class InetAddress3{ public static void main(string[] args) throws Exception{ String url = null ; Scanner reader = new Scanner(System.in); System.out.p

Chapter 4 UDP 소켓 사용법

Microsoft PowerPoint - 09-CE-24-채팅 프로그램

The Pocket Guide to TCP/IP Sockets: C Version

The Pocket Guide to TCP/IP Sockets: C Version

Microsoft PowerPoint - 09-EDU-15-채팅 프로그래밍

bn2019_2

Network Programming

제1장 Unix란 무엇인가?

게시판 스팸 실시간 차단 시스템

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

Microsoft PowerPoint 웹 연동 기술.pptx

13-Java Network Programming

À©µµ³×Æ®¿÷ÇÁ·Î±×·¡¹Ö4Àå_ÃÖÁ¾

Microsoft PowerPoint - java2-lecture7.ppt [호환 모드]

Microsoft PowerPoint - 13 ¼ÒÄÏÀ» ÀÌ¿ëÇÑ Åë½Å 2.ppt

Microsoft PowerPoint Python-Function.pptx

Microsoft PowerPoint - 09-CE-23-윈도우 소켓

서비스) 와서버( 관리대상서버) 간에자격증명을사용하여서로의 ID 를확인하고서로주고받는데이터를검사하고암호화하는프로세스 이다. 높은인증수준은일반적으로성능의저하를가져올수있지만높은 수준의보안과데이터무결성을제공한다. 기본값 - 관리대상서버에설정되어있는 DCOM 인증수준기본 값을

Microsoft Word - src.doc

Microsoft PowerPoint Python-WebDB

Microsoft PowerPoint - CSharp-15-채팅

PowerPoint Presentation

[Brochure] KOR_TunA

[제1강] 텍스트를 입력하세요

Microsoft PowerPoint - Lecture_Note_7.ppt [Compatibility Mode]

Microsoft PowerPoint PythonGUI-sprite

Microsoft PowerPoint - RMI.ppt

자바-11장N'1-502

9장 윈도우 소켓 프로그래밍

[ 네트워크 1] 3 주차 1 차시. IPv4 주소클래스 3 주차 1 차시 IPv4 주소클래스 학습목표 1. IP 헤더필드의구성을파악하고요약하여설명할수있다. 2. Subnet ID 및 Subnet Mask 를설명할수있고, 각클래스의사용가능한호스트수와사설 IP 주소및네트

17장 클래스와 메소드

Microsoft Word - NAT_1_.doc

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

Microsoft Word - release note-VRRP_Korean.doc

Microsoft PowerPoint - Lecture_Note_2.ppt [Compatibility Mode]

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

2주차: 입출력 제어 복습

FileMaker 15 ODBC 및 JDBC 설명서

Microsoft PowerPoint - 06-IPAddress [호환 모드]

FileMaker ODBC 및 JDBC 가이드

슬라이드 1

Microsoft PowerPoint - chap01-C언어개요.pptx

The OSI Model

1장. 유닉스 시스템 프로그래밍 개요

Microsoft PowerPoint - 06-CompSys-16-Socket.ppt

USB USB DV25 DV25 REC SRN-475S REC SRN-475S LAN POWER LAN POWER Quick Network Setup Guide xdsl/cable Modem PC DVR 1~3 1.. DVR DVR IP xdsl Cable xdsl C

. PC PC 3 [ ] [ ], [ ] [ ] [ ] 3 [ ] [ ], 4 [ ] [ ], 4 [Internet Protocol Version 4 (TCP/IPv4)] 5 [ ] 6 [ IP (O)], [ DNS (B)] 7 [ ] 한국어 -

Microsoft PowerPoint 세션.ppt

Microsoft PowerPoint - 6-PythonGUI-sprite

슬라이드 제목 없음

HLS(HTTP Live Streaming) 이용가이드 1. HLS 소개 Apple iphone, ipad, ipod의운영체제인 ios에서사용하는표준 HTTP 기반스트리밍프로토콜입니다. 2. HLS 지원대상 - 디바이스 : iphone/ipad/ipod - 운영체제 :

제20회_해킹방지워크샵_(이재석)

PowerPoint 프레젠테이션

vRealize Automation용 VMware Remote Console - VMware

JDBC 소개및설치 Database Laboratory

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

PowerPoint 프레젠테이션

Microsoft PowerPoint - Java7.pptx

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

Microsoft PowerPoint Python-Web.pptx

0. 들어가기 전

Microsoft PowerPoint - L4-7Switch기본교육자료.ppt

윈도우즈프로그래밍(1)

15 홍보담당관 (언론홍보담당) 김병호 ( 金 秉 鎬 ) 16 (행정담당) 박찬해 ( 朴 鑽 海 ) 예산담당관 17 (복지행정담당) 이혁재 ( 李 赫 在 ) 18 (보육담당) 주사 이영임 ( 李 泳 任 ) 기동근무해제. 19 (장애인담당) 박노혁 ( 朴 魯 爀 ) 기동

(Microsoft PowerPoint - Chapter17 RMI.ppt [\310\243\310\257 \270\360\265\345])

PWR PWR HDD HDD USB USB Quick Network Setup Guide xdsl/cable Modem PC DVR 1~3 1.. DVR DVR IP xdsl Cable xdsl Cable PC PC DDNS (

Microsoft PowerPoint - 09-CE-5-윈도우 핸들

RHEV 2.2 인증서 만료 확인 및 갱신

PowerPoint Presentation

Microsoft PowerPoint - 10Àå.ppt

Transcription:

: 채팅프로그래밍 순천향대학교컴퓨터공학과 이상정 순천향대학교컴퓨터공학과 1 학습내용 인터넷구조 인터넷구성요소 인터넷주소 클라이언트 / 서버구조 소켓프로그래밍소개 파이썬소켓프로그래밍 TCP 클라이언트 / 서버프로그래밍 스레드소개 파이썬스레드 채팅클라이언트 / 서버프로그램 순천향대학교컴퓨터공학과 2

네트워크요소 네트워크가장자리 (edge) 호스트 : 클라이언트와서버 데이터센터내의서버들 접속네트워크 (access network), 물리매체 (physical media) 유무선통신링크 네트워크코어 (core) 라우터 네트워크들의네트워크 순천향대학교컴퓨터공학과 3 클라이언트 / 서버구조 서버 (server) 항상켜져있는호스트 서비스제공 고정 IP 주소 데이터센터로확장 클라이언트 (client) 서버와통신 서비스요청 클라이언트들간직접통신하지않음 유동 IP 가질수있음 항상연결되어있지않고간헐적으로통신할수있음 순천향대학교컴퓨터공학과 4

인터넷주소 인터넷주소는 IP 주소와포트번호로구분 IP 주소 호스트 / 라우터주소 IPv4 주소 : 32 비트 32 비트 IP 주소공간이빠른속도로고갈되어가고있음 => IPv6: 128 비트 포트번호 호스트내의프로세스 ( 프로그램 ) 을구분하는번호 예 HTTP 서버 :80 80, 메일서버 :25 순천향대학교컴퓨터공학과 5 소켓 (Socket) 프로세스는소켓 (socket) 을통해네트워크로메시지를송수신 소켓은호스트의애플리케이션계층과트랜스포트계층간의인터페이스 프로세스는집 (house), 소켓은출입구 (door) 에비유 송신프로세스는출입구 ( 소켓 ) 바깥네트워크로메시지를밀어냄 소켓은애플리케이션과네트워크사이의 API(Application Programming Interface) 순천향대학교컴퓨터공학과 6

소켓프로그래밍 두가지형태의트랜스포트서비스 UDP: 비연결형, 비신뢰적인데이터전송 TCP: 연결형, 신뢰적인데이터전송 TCP 소켓프로그래밍 서버프로세스가먼저수행중에있어야함 서버는클라이언트의초기접속을처리하는소켓을생성해야함 클라이언트는서버에초기접속 클라이언트는 TCP 소켓을생성하고, 서버프로세스의 IP 주소와포트번호를명시하여서버에접속 서버는클라이언트에의해초기접속클라이언트와통신하는서버프로세스를위한새로운소켓 ( 연결소켓 ) 을생성 서버와클라이언트가데이터송수신 순천향대학교컴퓨터공학과 7 TCP 클라이언트 / 서버소켓상호동작 순천향대학교컴퓨터공학과 8

TCP 클라이언트 / 서버소켓상호동작 파이썬 순천향대학교컴퓨터공학과 9 파이썬소켓 소켓생성 소켓라이브러리 : socket 모듈 소켓생성 socket.socket(family, type, proto=0) 함수 : return socket family: 프로토콜표시, 인터넷인경우 AF_INET type: 인터넷인경우트랜스포트서비스표시 TCP: SOCK_STREAM, UDP: SOCK_DGRAM socket 객체를리턴 TCP 소켓생성예 serversocket = socket(af_inet, SOCK_STREAM) STREAM) 소켓종료 socket.close() close() 메소드 순천향대학교컴퓨터공학과 10

파이썬소켓 서버연결초기화 주소와소켓결합 서버의주소 (IP 주소, 포트번호 ) 를생성된소켓과결합 socket.bind(address) 메소드 address: (host IP 주소, 포트 ) 튜플 연결요청청취 튜플 (tuple) 은리스트와거의비슷하나리스트와달리요소의변경 ( 추가, 삭제등 ) 할수없음 클라이언트로부터소켓연결요청을청취 socket.listen(backlog) 메소드 backlog: 허용되는최대요청수 연결수락 클라이언트의연결요청을수락 socket.accept() 메소드 : return (socket, address) 클라이언트와통신을위한새로운연결소켓과클라이언트의주소를리턴 순천향대학교컴퓨터공학과 11 파이썬소켓 서버연결초기화예 서버연결초기화예 서버의 IP 주소가 '229.78.56.90' 이라고가정 서버인경우 IP 주소생략가능, ' ' 7000 번포트번호로클라이언트의연결요청을청취하는예 # 호스트주소지정 servername = '229.78.56.90'' serverport = 7000 # 소켓생성 serversocket = socket(af_inet, SOCK_STREAM) # 주소와소켓결합 serversocket.bind((servername, serverport)) # 연결요청청취 serversocket.listen(5) # 연결요청수락, 연결소켓생성 connectionsocket, addr = serversocket.accept() 순천향대학교컴퓨터공학과 12

파이썬소켓 클라이언트연결초기화 서버에연결요청 서버에연결을요청 socket.connect(address) 메소드 address는서버주소 (IP, 포트 ) # 연결할서버주소지정 servername = '229.78.56.90' serverport = 7000 # 소켓생성 clientsocket = socket(af_inet, SOCK_STREAM) # 서버에연결요청 clientsocket.connect((servername, serverport)) 순천향대학교컴퓨터공학과 13 파이썬소켓 데이터송수신 데이터송신 socket.send(bytes) 메소드 : return bytes_num bytes: 보내질바이트데이터들 보내진데이터의바이트수리턴 데이터수신 socket.recv(bufsize) 메소드 : return bytes bufsize: 한번에받을수있는최대데이터의바이트수 받은데이터의바이트들리턴 data = input('input string: ') clientsocket.send(data.encode("utf8")) # 문자열인코드하여송신 data = clientsocket.recv(1024) # 데이터수신 print(data) 순천향대학교컴퓨터공학과 14

TCP 소켓프로그램예소개 1. 클라이언트는키보드로한줄의문자 ( 데이터 ) 를읽고, 그데이터를서버로송신 2. 서버는데이터를수신하고, 문자를대문자로변환 3. 서버는수정된데이터를클라이언트에게송신 4. 클라이언트는수정된데이터를수신하고화면에출력 한컴퓨터에서 2 개의파이썬셀수행하여클라이언트 / 서버 통신 자기자신을나타내는루프백 (loopback) 주소사용 127.0.0.1 윈도우에서자기자신의주소를알려면콘솔창에서 ipconfig 명령 c> ipconfig 순천향대학교컴퓨터공학과 15 TCP 프로그램예 서버프로그램 ### TCP 서버프로그램 from socket import * # 네트워크 TCP 연결초기화 print("server TCP initialize...") # 호스트주소지정 serverport = 7000 # 서버소켓생성 serversocket = socket(af_inet, SOCK_STREAM) # 주소와소켓결합 serversocket.bind(('', serverport)) # 연결요청청취 serversocket.listen(1) while True: # 연결요청수락, 연결소켓리턴 connectionsocket, addr = serversocket.accept() print("client connected...", addr) # 데이터수신 rawdata = connectionsocket.recv(1024) print("receive: ", rawdata.decode("utf8")) # 대문자변환 upperstr = rawdata.upper() # 데이터송신 connectionsocket.send(upperstr) connectionsocket.close() 순천향대학교컴퓨터공학과 16

TCP 프로그램예 클라이언트프로그램 ### TCP 클라이언트프로그램 from socket import * # 네트워크 TCP 연결초기화 print("client TCP initialize...") # 연결할서버주소지정 servername = '127.0.0.1' serverport = 7000 # 클라이언트소켓생성 clientsocket = socket(af_inet, SOCK_STREAM) # 서버에연결요청 clientsocket.connect((servername, serverport)) print("server connected...") rawdata = input('input string: ') # 문자열인코드하여데이터송신 clientsocket.send(rawdata.encode("utf8")) # 데이터수신 modifiedstr = clientsocket.recv(1024) print("from server: ", modifiedstr.decode("uft8")) 순천향대학교컴퓨터공학과 17 시험주행 순천향대학교컴퓨터공학과 18

TCP 프로그램예동작검토 앞의예제프로그램 서버프로그램에서같은클라이언트연결에대해서도매번연결요청수락 루프내에서연결요청수락 클라이언트한번데이터송수신후종료 데이터수신시동작 데이터수신시데이터를받을때까지프로그램이블록킹 (blocking) 데이터수신까지프로그램이다른동작을못함 개선된프로그램 채팅프로그램 한번연결수락으로클라이언트종료하지않고계속데이터송수신 루프밖에서연결요청수락 데이터수신블록킹문제 데이터수신동작을독자적인프로그램 ( 스레드 ) 로실행하여해결 순천향대학교컴퓨터공학과 19 파이썬스레드생성및실행 스레드라이브러리 : threading 모듈 스레드생성 threading.thread(target= 함수이름, args=( 인수, )) 함수 : return Thread target: 실행될함수이름 args: 함수에전달될인수튜플로표시되며인수가없으면생략인수가하나인경우는 ( 인수,) 로표시 Thread 객체를리턴 스레드생성예 t = Thread(target=func, args = (10, 20)) 스레드실행 Thread.start() 메소드 순천향대학교컴퓨터공학과 20

from threading import * 스레드예 # 스레드로실행되는함수 def testprint(m, n=5): print("testprint(%d) "%m) for i in range(m,n): print(" %d" %i) # 스레드생성및실행 th = Thread(target=testPrint, t t tp t args=(2,)) th.start() print("mainprint i i t ") for i in range(100,106): print(" %d" %i) # 스레드생성및실행 th = Thread(target=testPrint, args=(30,35)) th.start() 순천향대학교컴퓨터공학과 21 시험주행 순천향대학교컴퓨터공학과 22

채팅프로그램예 클라이언트와서버가서로문자를주고받는채팅프로그램예 한번연결수락으로클라이언트종료하지않고계속데이터송수신 루프밖에서연결요청수락 데이터수신동작을독자적인프로그램 ( 스레드 ) 로실행 한글송수신을위해 UTF8 인코드 / 디코드 파이썬 GUI에서는수신문자가바로출력되지않을수도있음 => 윈도우프롬트창에서실행 문제점 1:1 채팅프로그램 다 : 다채팅프로그램은비동기입출력필요 => 파이썬은 select 모듈제공 순천향대학교컴퓨터공학과 23 ### 채팅서버프로그램 from socket import * from threading import * 채팅프로그램예 서버프로그램 # 연결요청수락, 연결소켓리턴 connectionsocket, addr = serversocket.accept() print(" 클라이언트연결됨...", addr, " n") # 메시지수신함수 ( 스레드 ) def serverrecv(): while True: # 데이터수신하고, 디코드하여출력 clientmsg = connectionsocket.recv(1024) print("[ 클라이언트 ] " + clientmsg.decode("utf8") + " n") # 서버네트워크연결초기화 print(" 서버네트워크연결초기화...") # 호스트주소지정 serverport = 7000 # 서버소켓생성 serversocket = socket(af_inet, SOCK_STREAM) # 주소와소켓결합 serversocket.bind(('', serverport)) # 연결요청청취 serversocket.listen(1) 순천향대학교컴퓨터공학과 24 # 스레드생성및실행 Thread(target=serverRecv).start() () while True: # 송신데이터입력 rawdata = input() # 문자열인코드하여데이터송신 connectionsocket.send(rawdata.encode("utf8")) connectionsocket.close()

채팅프로그램예 클라이언트프로그램 ### 채팅클라이언트프로그램 from socket import * from threading import * # 서버에연결요청 clientsocket.connect((servername, t t(( serverport)) print(" 서버연결됨... n") # 메시지수신함수 ( 스레드 ) def clientrecv(): while True: # 데이터수신하고, 디코드하여출력 servermsg = clientsocket.recv(1024) print("[ 서버 ] " + servermsg.decode("utf8") + " n") clientsocket.close() # 클라이언트네트워크연결초기화 print(" 클라이언트네트워크연결초기화...") # 연결할서버주소지정 servername = '127.0.0.1' serverport = 7000 # 클라이언트소켓생성 clientsocket = socket(af_inet, SOCK_STREAM) 순천향대학교컴퓨터공학과 25 # 스레드생성및실행 Thread(target=clientRecv).start() while True: # 송신데이터입력 rawdata = input() # 문자열인코드하여데이터송신 clientsocket.send(rawdata.encode("utf8")) t t d (" tf8")) clientsocket.close() 시험주행 순천향대학교컴퓨터공학과 26

과제 1. 앞에서소개된채팅프로그램을작성하고실행 2. 앞에서배운내용을사용한임의의프로그램작성 프로그램설명 프로그램소스 실행결과 순천향대학교컴퓨터공학과 27