Python入門—— socket 模組
阿新 • • 發佈:2019-02-05
socket 模組
- 什麼是socket
網路上的兩個程式通過一個雙向的通訊連線實現資料的交換,這個連線的一端稱為一個socket
所謂socket通常也稱作“套接字”,用於描述IP地址和埠,是一個通訊鏈的控制代碼,應用程式通常通過“套接字”向網路發出請求或應答網路請求
socket起源於Uinx,而Unix/Linux基本哲學之一就是“一切皆檔案”,都可以用“開啟open–>讀寫write/read–>關閉close”模式來操作,socket就是該模式的一個實現,socket即是一種特殊的檔案,一些socket函式就是對其進行的操作(讀/寫 IO,開啟,關閉)- Socket的英文原義是“孔”或“插座”。作為BSD UNIX的程序通訊機制,取後一種意思。通常也稱作”套接字”,用於描述IP地址和埠,是一個通訊鏈的控制代碼,可以用來實現不同虛擬機器或不同計算機之間的通訊。在Internet上的主機一般運行了多個服務軟體,同時提供幾種服務。每種服務都開啟一個Socket,並繫結到一個埠上,不同的埠對應於不同的服務。Socket正如其英文原義那樣,像一個多孔插座。一臺主機猶如佈滿各種插座的房間,每個插座有一個編號,有的插座提供220伏交流電,有的提供110伏交流電,有的則提供有線電視節目。客戶軟體將插頭插到不同編號的插座,就可以得到不同的服務
例如:中國移動客服
對於移動來說:一直監聽一個號碼10086,當有電話進來後,就分配一個客服和客戶去溝通並處理請求
對於使用者:需要知道10086這個號碼,並需要打電話
示例:
建立服務端:
import socket
# 1.建立socket物件
sk = socket.socket()
# 2.繫結埠和ip
ip_port = ('127.0.0.1',9998)
sk.bind(ip_port)
# 3.最大連線數
sk.listen(5)
while True:
# 獲取客戶端的ip和埠號
conn,address = sk.accept()
conn.send('hello')
flag = True
while flag:
data = conn.recv(1024 )
print data
if data == 'exit':
flag = False
conn.send('sorry')
conn.close()
建立客戶端
import socket
# 建立一個socket物件
client = socket.socket()
# 建立連線
ip_port = ('127.0.0.1',9998)
client.connect(ip_port)
while True:
# 獲取資料
data = client.recv(1024)
print data
# 傳送資料
inp = raw_input('clent:')
client.send(inp)
if inp == 'exit':
break
執行客戶端:
將會在服務端返回客戶端的資訊: