ソケットプログラミング

http://pleac.sourceforge.net/pleac_python/sockets.htmlを参考に作成しましたー。
 
まずはクライアントソケットです。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import socket

class Client:
	""" クライアントソケット """
	def __init__(self, ip_addr, port):
		self._sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
		self._ip_addr = ip_addr
		self._port    = port
	def connect(self):
		""" 接続開始 """
		print "-->CONNECT BEGIN."
		self._sock.connect((self._ip_addr, self._port))
		print "-->CONNECT DONE."
		
		self._sock.send("INIT")
		print self._sock.recv(1024).rstrip()
	def talk(self):
		""" 会話 """
		self._sock.send("TALK")
		print self._sock.recv(1024).rstrip()
		cmd = raw_input(">>")
		self._sock.send(cmd)
		print self._sock.recv(1024).rstrip()
	def disconnect(self):
		""" 切断 """
		self._sock.send("END")
		self._sock.close()
		print "-->CLOSE DONE."

def main():
	client = Client("localhost", 9999)
	client.connect()
	while True:
		client.talk()
		cmd = raw_input("quit?(y/n)")
		if cmd.strip() == "y":
			break
	client.disconnect()

if __name__ == "__main__":
	main()

 
サーバーソケットです。

import time
from SocketServer import TCPServer
from SocketServer import BaseRequestHandler

class Server:
	""" ソケットサーバー """
	def __init__(self, ip_addr, port):
		print "-->SERVER CREATE BEGIN."
		self._server = TCPServer((ip_addr, port), ServerHandler)
		print "-->SERVER CREATE DONE."
	def start(self):
		print "-->SERVER START."
		self._server.serve_forever()

class ServerHandler(BaseRequestHandler):
	""" ソケットサーバーのハンドリング """
	def handle(self):
		print "%s I got an request from ip=%s port=%s"%(
			time.strftime("%Y-%m-%d %H:%M:%S"),
			self.client_address[0],
			self.client_address[1])
		
		while True:
			# コマンド処理
			recv = self.getReceive()
			print "RECEIVE COMMAND:", recv
			if recv == "INIT":
				self.request.send("Hello.")
			elif recv == "TALK":
				self.request.send("What is your name?\n")
				recv = self.getReceive()
				send = "Welcome %s!\n"%recv
				self.request.send(send)
			elif recv == "END":
				break
		print "%s connection finished"%self.client_address[0]
	def getReceive(self):
		return self.request.recv(1024).strip()

def main():
	server = Server("127.0.0.1", 9999)
	server.start()

if __name__ == "__main__":
	main()