Python中socket套接字

1.什麼是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這個號碼,並需要打電話

client端

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

server端

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 = result[0]
    #address = result[1]
    #print result
    #print type(result)
    conn.send('hello')
    flag = True
    while flag:
        data = conn.recv(1024)
        print data
        if data == 'exit':
            flag = False
        conn.send('sb')
    conn.close()
發佈了80 篇原創文章 · 獲贊 18 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章