1. 程式人生 > >【程式碼】傳智播客 Python基礎班+就業班

【程式碼】傳智播客 Python基礎班+就業班

工廠方法模式:基類定義介面,子類具體實現

class Store(object):

	#此處選車並不會執行
	def select_car(self):
		print("Store:select_car")
		
	# 店鋪只負責訂購功能,新增選車介面
	def order(self, car_type):
		return self.select_car(car_type)

class BMW_Car_Store(Store):
	#繼承基類,實現自己的選車方案,即呼叫工廠類
	def select_car(self, car_type):
		return BMW_Factory().select_car_by_type(car_type)		

class BMW_Factory(object):
	#被呼叫類的最終選車實現
	def select_car_by_type(self, car_type):
		print("BMW_Factory in BMW_Car_Store")

bmw_store = BMW_Car_Store()
bmw = bmw_store.order("720li")

tcp server

from socket import *
#建立伺服器套接字,繫結ip埠,監聽(被動連線)數量
svr_skt = socket(AF_INET, SOCK_STREAM)
svr_skt.bind(('',7789))
svr_skt.listen(4)

#建立伺服器接收到待客戶端(阻塞,等客戶端連入),及其ip和port
clt_skt, clt_info = svr_skt.accept()

#接收資料
recv_data = clt_skt.recv(1024)
print str(clt_info)+':'+str(recv_data)

#傳送資料,將字串中文編碼
#svr_skt.send('hello xp'.encode('gb2312'))
#此處send資料報錯:socket.error: [Errno 32] Broken pipe

#關閉客戶端,再伺服器
clt_skt.close()
svr_skt.close()

tcp client

from socket import *
#建立套接字,繫結伺服器埠
clt_skt = socket(AF_INET, SOCK_STREAM)
clt_skt.connect(('192.168.37.3',8989))
#連線後即傳送資訊,此處c發給s成功,而s發給c失敗
clt_skt.send('hello xp'.encode('gb2312'))
#接收資料
rcv_data = clt_skt.recv(1024)
print(rcv_data)
#關閉套接字
clt_skt.close()

udp receive & send

from socket import *
#建立套接字,繫結接收ip和埠
udp_skt = socket(AF_INET, SOCK_DGRAM)
bind_addr = ('',7788)
udp_skt.bind(bind_addr)
#輸入待發送資訊,傳送
send_info = raw_input('input infomation to send:')
udp_skt.sendto(str(send_info),('192.168.37.3',8080))
#等待接收資訊,
recv_data = udp_skt.recvfrom(1024)
print str(recv_data[1])+':'+recv_data[0]
#關閉套接字
udp_skt.close()