1. 程式人生 > >Python入門—— socket 模組

Python入門—— socket 模組

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

執行客戶端:
這裡寫圖片描述
將會在服務端返回客戶端的資訊:
這裡寫圖片描述