本章出自《Python核心編程》中的實例
創建一個TCP時間戳服務器,用來對客戶的信息添加個時間功能
#-*- coding:utf-8 -*-
from socket import *
from time import ctime
HOST = '' #HOST爲空,表示電話可以bind在任何主機上
PORT = 20000 #0~65535,小於1024爲系統保留端口(政府號碼,哈哈哈)
ADDR = (HOST, PORT) #電話號碼
BUFSIZ = 1024 #緩衝區大小
tcpSerSock = socket(AF_INET, SOCK_STREAM) # 創建電話
tcpSerSock.bind(ADDR) #綁定電話,變身座機
tcpSerSock.listen(5) #一次最多接聽5個電話
while True:
print "----waiting----"
tcpCliSock, addr = tcpSerSock.accept() #獲得了聯繫線路和電話號碼
print "---connected from:", addr #看下客戶來自哪裏
while True:
data = tcpCliSock.recv(BUFSIZ)
if not data:
break
tcpCliSock.send("[%s]%s"% (ctime(), data))
創建一個TCP客戶端
#-*- coding:utf-8 -*-
from socket import *
HOST = 'localhost' #填寫服務器的主機,由於我的服務器和客戶端都在本機,就用‘localhost’。
PORT = 20000
ADDR = (HOST, PORT)
BUFSIZ = 1024
tcpCliSock = socket(AF_INET, SOCK_STREAM)
tcpCliSock.connect(ADDR)
while True:
data = raw_input('>>>') #說話
if not data: #如果不想對話,無話可說了,就退出來
break
tcpCliSock.send(data) #發送給服務器
data = tcpCliSock.recv(BUFSIZ) #獲取服務器的回答
if not data: #服務器可能斷掉了,收不到回話
break
print data
tcpCliSock.close() #客戶自己掛電話