from socket import *
from time import ctime
import os,sys #sys定義了進程退出的方法
HOST='localhost' #定義主機
PORT=21567 #定義端口號
BUFSIZ=1024 #定義緩衝區
ADDR=(HOST,PORT) #定義元組
tcpSerSock=socket(AF_INET,SOCK_STREAM)#生成TCP Socket
tcpSerSock.bind(ADDR) #將該Socket與元組進行綁定
tcpSerSock.listen(5) #監聽請求
while True: #定義無限循環(愈來愈像shell)
print "waiting ...."
try: # 在生成進程中有銷燬tcpSerSock的字句,若是不捕獲這個異常將會致使程序錯誤!
tcpCliSock,addr=tcpSerSock.accept()
except: #捕獲全部異常
sys.exit(0) #只要捕獲到阻塞失敗將退出當前進程。(只有生成的進程纔會致使阻塞失敗,在生成進程中才有銷燬tcpSerSock的字句)
if os.fork(): #若是在主進程中的操做
pass
else: #若是在派生進程中的操做
print 'con from :',addr
while True:
data=tcpCliSock.recv(BUFSIZ)
if not data:
tcpSerSock.close() #銷燬tcpSerSock
break #跳出循環!
tcpCliSock.send('[%s] %s' %(ctime(),data))
tcpSerSock.close()#這句永遠不會被執行!