본문 바로가기
조회 수 5176 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

+ - Up Down Comment Print
?

단축키

Prev이전 문서

Next다음 문서

+ - Up Down Comment Print
: SocketServer 모듈은 표준 라이브러리보다 상위레벨의 모듈로 client, server를 생성하는 코드를 더욱 단순화 시킨다. (파이선 3.x에서는 socketserver로 변경됨)

###################################
# SocketServer TCP Server 생성하기
###################################

#!/usr/bin/python

from SocketServer import TCPServer as TCP, StreamRequestHandler as SRH <--- 서버클래스들 import 
from time import ctime

HOST = ''
PORT = 21567
ADDR = (HOST, PORT)

class MyRequestHandler(SRH): <----- SRH(StreamRequestHandler)클래스를 상속하는 서브클래스
	def handler(self): <----- 메소드 오버라이드 (원래의 handler() 메소드는 아무런 액션이 없음)
		print '...connected from:', self.client_address <------ 상위클래스인 SRH 클래스의 client_address 속성
		self.wfile.write('[%s] %s' % (ctime(), self.rfile.readline()))

tcpServ = TCP(ADDR, MyRequestHandler) <----- TCP(TCPServer) 클래스의 객체를 생성
print 'waiting for connection...'
tcpServ.serve_forever() <------ 루프로 들어가서 client 요청을 서비스


- handle() 메소드는 client로 부터 incoming 메시지가 오면 호출됨
- StreamRequestHandler 클래스는 file 객체처럼 input/output socket을 처리. 따라서 client 메시지를 읽는데 readline() 메소드를 사용하고 client로 응답을 보내는데 write() 메소드를 사용


###################################
# SocketServer TCP Client 생성하기
###################################

#!/usr/bin/python

from socket import *

HOST = 'localhost'
PORT = 21567
BUFSIZ = 1024
ADDR = (HOST, PORT)

while True:
	tcpCliSock = socket(AF_INET, SOCK_STREAM)
	tcpCliSock.connect(ADDR)
	data = raw_input('> ')
	if not data:
		break
	tcpCliSock.send('%s\r\n' % data)
	data = tcpCliSock.recv(BUFSIZ)
	if not data:
		break
	print data.strip()
	tcpCliSock.close()


----- output ------
$ tsTclntSS.py
> 'Tis but a scratch.
[Tue Apr 18 20:55:49 2006] 'Tis but a scratch. > Just a flesh wound.
[Tue Apr 18 20:55:56 2006] Just a flesh wound. >
$


Title
List of Articles
번호 제목 글쓴이 날짜 조회 수
58 Python 2.7 in CentOS with no issue (setuptools, pip, virtualenv) Hojung 2014.08.31 3528
57 GUI 기본 file Hojung 2013.04.06 5568
56 Gmail SMTPx2, POP, IMAP Script Hojung 2013.04.06 3515
55 E-Mail 작성 및 발송 스크립트 Hojung 2013.04.06 3834
54 Interactive IMAP4 Script Hojung 2013.04.06 3188
53 SMTP and POP3 Script Hojung 2013.04.06 2287
52 Interactive POP3 Script file Hojung 2013.04.06 2805
51 Interactive SMTP Script Hojung 2013.04.06 2269
50 FTP Download Script Hojung 2013.04.06 7247
» SocketServer 모듈을 사용해 TCP Server/Client 작성 Hojung 2013.04.06 5176
48 Network Programming - socket() 모듈을 사용해 UDP Server, client 생성 Hojung 2013.04.06 5099
47 Network Programming - socket() 모듈을 사용해 TCP Server, client 생성 Hojung 2013.04.06 16195
46 brew install python on Mac OS X + pyqt, lxml and spynner Hojung 2013.03.29 5120
45 Regular Expression (search vs match 그리고 Greediness) file Hojung 2013.03.26 2482
44 Regular Expression - Extension Notations (?...) Hojung 2013.03.26 2312
43 Regular Expression (문자열을 RE를 이용 list 리턴) - split() Hojung 2013.03.26 3224
42 Regular Expression (찾기 및 바꾸기) - sub() and subn() Hojung 2013.03.26 2538
41 Regular Expression (찾기) - findall() and finditer() Hojung 2013.03.26 3433
40 Regular Expression (matching vs searching) Hojung 2013.03.23 8766
39 How to install pip, spynner, macports and py-pyqt4 Hojung 2013.03.22 3640
Board Pagination ‹ Prev 1 2 3 Next ›
/ 3

Designed by sketchbooks.co.kr / sketchbook5 board skin

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5