Python中的Socket模塊中的Socket()函數可以幫助我們創建手機
格式
手機 = socket(機型, 連接方式, protocol = 0)
機型:老人機(AF_UNIX), 智能機(AF_INET)
連接模式: 高清模式(SOCK_STREAM), 流暢模式(SOCK_DGRAM)
protocol一般不填,默認值爲0
現在我們來創建一個TCP/IP Socket 對象
from socket import *
tcpSocket = socket(AF_INET, SOCK_STREAM)
創建一個UDP/IP Socket 對象
from socket import *
udpSocket = socket(AF_INET, SOCK_DGRAM)
所謂的Socket對象就是手機,電話號碼就是主機的IP和Port。之後服務器和客戶端的交流就靠這個手機來聯繫
創建一個TCP服務器
僞代碼
from socket import *
電話 = socket() #創建一個服務電話
電話.bind(HOST, PORT) #將電話綁定到服務器上(座機)
電話.listen() #一次最多接待客戶次數
listen_loop: #永不停歇地等待客戶的聯繫
# 聯繫到一個客戶後將連接線路轉給下屬來處理,服務器繼續等待其他客戶的連接
連接線路1 = 電話.accept()
comm_loop: #通信循環
data = 連接線路1.recv(緩衝區大小) #獲取客戶的請求
連接線路1.send(....data) #對請求進行處理後再發給客戶
上面的recv()函數接收一個緩衝區大小的參數。因爲服務器是從緩衝區接收客戶端的數據的。至於什麼是緩衝區?爲什麼要有這個?下一章會講到。
創建一個TCP客戶端
from socket import *
客戶電話 = socket() #創建電話
#不用綁定,因爲客戶只要有電話就行,偷的搶的都不重要,你只要有手機能打的通就行
客戶電話.connect(服務器的HOST,PORT) #打過去,和服務器建立聯繫
comm_loop: #開始對話
客戶電話.send()/recv() #發送或接收數據
客戶電話.close() #掛電話