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

執行客戶端:
這裏寫圖片描述
將會在服務端返回客戶端的信息:
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章