婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > python基礎之Socket套接字詳解

python基礎之Socket套接字詳解

熱門標簽:蓋州市地圖標注 地圖制圖標注位置改變是移位嗎 南京銷售外呼系統軟件 上海機器人外呼系統哪家好 浙江電銷卡外呼系統好用嗎 房產電銷外呼系統 315電話機器人廣告 地圖標注微信發送位置不顯示 地圖標注的意義點

前言

Python語言提供了Socket套接字來實現網絡通信。

Python的應用程序通常通過Socket"套接字"向網絡發出請求或者應答網絡請求,使主機間或者一臺計算機上的進程間可以通訊。

服務器和客戶端的源代碼

服務器端

#coding=utf-8
#創建TCP服務器
import socket
import time
from time import ctime

HOST = '127.0.0.1'
PORT = 8080
BUFSIZE=1024
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  
sock.bind((HOST, PORT))  
sock.listen(5)
addr=(HOST,PORT)
while True:
    print('waiting for connection...')
    sock,addr =sock.accept()
    print('...connected from:',addr)
    while True:
        data =sock.recv(BUFSIZE).decode()
        print('date=',data)
        if not data:
            break
        sock.send(('[%s] %s' %(ctime(),data)).encode())
sock.close()

客戶端

#coding=utf-8
#創建TCP客戶端

import socket

HOST = '127.0.0.1'
PORT = 8080
BUFSIZE = 1024
ADDR=(HOST,PORT)
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((HOST, PORT)) 

while True:
    data = input('> ')
    if not data:
        break
    sock.send(data.encode())
    data = sock.recv(BUFSIZE).decode()
    if not data:
        break
    print(data)

sock.close()

執行結果顯示:

首先執行服務器端,結果如圖1:

緊接著執行客戶端,如圖2

需要注意的是:服務器端和客戶端需要在兩個IDLE Shell中打開,否則客戶機一啟動,服務器程序就會中止執行,而客戶端又連不上服務器,從而報錯,如圖3

我們在圖2中輸入一些需要傳輸的信息,然后回車,在服務端可以看到收到了相關信息,如圖4(客戶端發送信息),圖5(服務器端接收信息)


源代碼解析

我們從服務器端開始看起,先上一部分代碼:

import socket
import time
from time import ctime

這三句是導入了三個模塊,分別是socket 模塊、time模塊和ctime模塊。

1)socket 模塊當中提供了與socket 套接字相關的各項功能,后面用到了很多,這里先介紹一個,其他一會再介紹:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

功能:創建套接字,并把創建好的套接字賦給一個變量sock,下面程序中與套接字相關的操作都由sock來完成。

格式:socket.socket([family[, type[, proto]]])

參數:

family: 套接字家族,可以使 AF_UNIX 或者 AF_INET。AF_INET,是指面向網絡的,因特網;AF_UNIX,基于文件的;在本例中,我們使用AF_INET,利用因特網來進行通信。

type: 套接字類型,可以根據是面向連接的還是非連接分為 SOCK_STREAM 或 SOCK_DGRAM。

SOCK_STREAM:對應著TCP,提供了一個面向連接、可靠的數據傳輸服務,數據無差錯、無重復的發送且按發送順序接收。內設置流量控制,避免數據流淹沒慢的接收方。數據被看作是字節流,無長度限制。

SOCK_DGRAM:對應著UDP,提供無連接服務。數據包以獨立數據包的形式被發送,不提供無差錯保證,數據可能丟失或重復,順序發送,可能亂序接收。

本例中選TCP協議。

protocol: 一般不填默認為 0。

2)time模塊,完成python中與時間相關的計算,例如time.sleep(5)延時5秒,time time() 返回當前時間的時間戳等等。
下面的ctime也是其中一個功能,函數把一個時間戳(按秒計算的浮點數)轉化為time.asctime()的形式,可以便于我們觀察。轉換以后的格式如下:

print “time.ctime() : %s” % time.ctime()

結果:time.ctime() : Tue Feb 17 10:00:18 2013

在我們的例子中,圖4的圈2所表示的就是轉換后的時間。

HOST = '127.0.0.1'
PORT = 8080
BUFSIZE=1024
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  
sock.bind((HOST, PORT))  
sock.listen(5)
addr=(HOST,PORT)

看完頭部之后,我們來看第二部分。

前三句定義了三個變量:HOST、PORT、BUFSIZE,這三個變量分別是服務器的IP地址,服務器的端口,接收的最大數據量。

第四句sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 定義了socket 套接字。

第五句sock.bind((HOST, PORT)),將IP地址和端口綁定給定義的套接字sock。

第六句sock.listen(5),開始 TCP 監聽。中間的5表示在拒絕連接之前,操作系統可以掛起的最大連接數量。該值至少為 1,大部分應用程序設為 5 就可以了。

第七句addr=(HOST,PORT),定義了一個變量addr,并且將地址以元組的形式賦值給addr。

while True:
    print('waiting for connection...')
    sock,addr =sock.accept()
    print('...connected from:',addr)
    while True:
        data =sock.recv(BUFSIZE).decode()
        print('date=',data)
        if not data:
            break
        sock.send(('[%s] %s' %(ctime(),data)).encode())
        sock.close()
sock.close()

這是服務器代碼的最后一部分,也是通信的主體,首先進入一個while True:的永真循環,進入之后執行print(‘waiting for connection…'),這就是圖1上藍色字所表示的一部分。

第三行執行sock,addr =sock.accept(),sock.accept()是被動接受TCP客戶端連接,(阻塞式)等待連接的到來,當客戶機啟動提交請求后,服務器接受請求,并將客戶端的IP地址等信息存入變量addr中。

第四行執行print('…connected from:',addr),所以輸入字符串…connected from:以及客戶端傳來的IP地址和端口。

以上服務器和客戶端的通信就連接起來了。

下面開始傳送數據,又進入一個永真循環,代碼:

  while True:
        data =sock.recv(BUFSIZE).decode()
        print('date=',data)
        if not data:
            break
        sock.send(('[%s] %s' %(ctime(),data)).encode())
        sock.close()

第二行:data =sock.recv(BUFSIZE).decode()。

sock.recv()表示接收 TCP 數據,數據以字符串形式返回,BUFSIZE指定要接收的最大數據量。

decode() 將其他編碼的字符串解碼成unicode格式。

這里要說明一下,上圖:

字符串在python內部是用unicode編碼來表示,而在硬盤是utf-8格式。所以在存儲和使用時要進行格式轉換,轉換的方式:

decode 將其他編碼的字符串(例如utf-8)解碼成unicode格式。

encode 將unicode編碼成另一種編碼格式(例如utf-8)。

當然decode和encode 不止可以轉換utf-8類型,轉換的類型可以通過 encoding 來指定,不過我們常用的就是這個。

總結一下,data =sock.recv(BUFSIZE).decode()執行結束就表示把客戶端的數據接收過來存放到了data這個變量中。

下面進行第三行print(‘date=',data),打印數據,結果就是圖5中的圈3所表示的。

第四行及第五行: 如果沒有接收到數據,則跳出循環,繼續監聽。

if not data:
break

第六行 sock.send(('[%s] %s' %(ctime(),data)).encode()),向客戶端發送轉換格式(encode)后的數據。

數據包括兩部分,第一部分是ctime(),表示以字符串形式表示的時間,data表示變量中存的信息.前面還有一部分'[%s] %s'中的%s格式化字符串,形成需要的輸出格式。

最后一句sock.close(),關閉套接字。

這樣服務器端就完成了。我們再來看客戶端。

import socket

HOST = '127.0.0.1'
PORT = 8080
BUFSIZE = 1024
ADDR=(HOST,PORT)
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((HOST, PORT)) 

這部只解釋幾句,HOST = ‘127.0.0.1' ,PORT = 8080,這兩句是服務器端的IP地址和端口號。

sock.connect((HOST, PORT)) 這一句是利用創建好的socket套接字主動初始化TCP服務器連接,就是向服務器提出申請,服務器端用sock.accept()接受請求。

這一句執行完之后,通信就建立起來了,在服務器端會執行print('…connected from:',addr),結果如圖5圈2所示。

while True:
    data = input('> ')
    if not data:
        break
    sock.send(data.encode())
    data = sock.recv(BUFSIZE).decode()
    if not data:
        break
    print(data)
sock.close()

接下來進入永真循環,先是input函數,輸出> 后等待輸入,如圖2所示。例如輸入hi,server,如圖4的圈1,然后后兩句是

if not data:
break

如果沒有輸入,則跳出循環。

第五行sock.send(data.encode()),將輸入的數據轉換格式后將數據發送給服務器端,這時把hi,server發送給服務器端,服務器用data =sock.recv(BUFSIZE).decode()來接收,同時用print(‘date=',data)打印出來,結果如5的圈3所示。

這時,服務器會繼續執行sock.send(('[%s] %s' %(ctime(),data)).encode()),把當前的時間和數據發送給客戶端。

而在客戶端,執行data = sock.recv(BUFSIZ).decode(),所以客戶端會接收到相應的數據,并且打印出來,結果如圖4的圈2所示。

以上就是Socket套接字的TCP通信。

到此這篇關于python基礎之Socket套接字詳解的文章就介紹到這了,更多相關python Socket詳解內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Python socket 套接字實現通信詳解
  • python粘包問題及socket套接字編程詳解
  • 詳解python3中socket套接字的編碼問題解決
  • python socket網絡編程步驟詳解(socket套接字使用)
  • Python基礎之Socket通信原理
  • python實現socket簡單通信的示例代碼
  • python和websocket構建實時日志跟蹤器的步驟
  • 用Python進行websocket接口測試

標簽:臨汾 雙鴨山 赤峰 克拉瑪依 陽泉 貴州 日照 金華

巨人網絡通訊聲明:本文標題《python基礎之Socket套接字詳解》,本文關鍵詞  python,基礎,之,Socket,套接字,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《python基礎之Socket套接字詳解》相關的同類信息!
  • 本頁收集關于python基礎之Socket套接字詳解的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    麻豆国产精品官网| 91在线播放网址| 色噜噜久久综合| 欧美精品一区二区在线观看| 亚洲va国产天堂va久久en| 91在线观看美女| 亚洲色图色小说| 在线观看欧美精品| 日韩国产欧美三级| 欧美精品三级日韩久久| 亚洲成人777| 日韩一区二区中文字幕| 国产激情一区二区三区| 亚洲图片欧美综合| www.激情成人| 亚洲第一福利视频在线| 欧美一区二区三区四区五区| 国产在线精品一区二区三区不卡 | 亚洲欧美色综合| 欧美唯美清纯偷拍| 蜜臀av一区二区| 国产精品电影一区二区| 欧美日韩亚洲综合在线| 麻豆精品视频在线观看免费| 中文av一区特黄| 日韩欧美亚洲另类制服综合在线| 国产精品中文字幕一区二区三区| 中文字幕一区二区三区av| 91精品国产一区二区三区| 成人免费高清在线| 国产真实乱子伦精品视频| 亚洲色图欧美激情| 久久久久久久久久看片| 欧美日韩色综合| 色婷婷av一区二区三区之一色屋| 精品一区二区在线视频| 亚洲成精国产精品女| 日韩美女啊v在线免费观看| 日本免费在线视频不卡一不卡二| 久久久电影一区二区三区| 91精品国产综合久久久久久漫画| 91在线视频18| 一本大道av伊人久久综合| 丁香天五香天堂综合| 久久成人av少妇免费| 免费观看久久久4p| 激情综合五月天| 麻豆精品视频在线| 狠狠色丁香久久婷婷综合丁香| 婷婷激情综合网| 欧美中文一区二区三区| 不卡视频在线看| 亚洲视频资源在线| 91丨porny丨最新| 国产精品嫩草久久久久| 国产毛片精品视频| 久久一区二区三区四区| 亚洲已满18点击进入久久| 成人黄色av电影| 午夜亚洲福利老司机| 久久精品视频在线看| 精品国产一区二区三区不卡| 欧洲生活片亚洲生活在线观看| 一本久道久久综合中文字幕| 欧美日韩不卡在线| 久久久久久免费网| 亚洲精品国产成人久久av盗摄 | 99在线精品观看| 美腿丝袜在线亚洲一区| 成人av免费在线观看| 欧美疯狂做受xxxx富婆| 国产日韩一级二级三级| 日韩—二三区免费观看av| 成人动漫在线一区| 欧美精品久久一区| 亚洲三级电影网站| 国产原创一区二区三区| 5858s免费视频成人| 亚洲人快播电影网| 成人免费高清在线| 国产欧美日韩在线看| 午夜精品123| 欧美在线播放高清精品| 亚洲欧美日韩国产另类专区| 成人免费毛片片v| 亚洲国产激情av| 成人午夜看片网址| xf在线a精品一区二区视频网站| 一区二区日韩电影| 91浏览器打开| 亚洲欧洲精品一区二区精品久久久| 国产精品亚洲а∨天堂免在线| 精品欧美乱码久久久久久| 久久激五月天综合精品| 日韩三级在线免费观看| 日韩国产精品大片| 欧美大片一区二区| 国产精品12区| 亚洲精品va在线观看| 91极品美女在线| 亚洲成人自拍网| 91麻豆精品91久久久久久清纯 | 国内久久精品视频| 最新不卡av在线| 欧美妇女性影城| 国产成人8x视频一区二区| 日本一二三不卡| 欧美区视频在线观看| 国产精品18久久久久久久久| 亚洲欧美韩国综合色| 91精品国产高清一区二区三区蜜臀| 成人综合在线网站| 日本女人一区二区三区| 亚洲欧洲成人av每日更新| 精品久久久久久久久久久院品网 | 国产精品美女久久久久av爽李琼| 91麻豆自制传媒国产之光| 久色婷婷小香蕉久久| 亚洲成av人片在www色猫咪| 欧美成人性战久久| 欧美三级电影在线观看| 国产成人综合网| 久久精品免费看| 午夜视频在线观看一区| 亚洲三级理论片| 一区二区三区欧美日| 中文字幕制服丝袜成人av| 国产午夜亚洲精品理论片色戒| 欧美一区二区三区在线观看视频 | 中文字幕一区二区日韩精品绯色| 欧美一级欧美三级| 欧美一区二区黄| 日韩女优av电影在线观看| 日韩欧美一二三四区| xvideos.蜜桃一区二区| 久久久久国产精品麻豆ai换脸| 精品国产人成亚洲区| 久久久精品日韩欧美| 国产欧美视频在线观看| 中国色在线观看另类| 综合激情成人伊人| 亚洲最大成人网4388xx| 无吗不卡中文字幕| 国产一区二区三区黄视频 | ㊣最新国产の精品bt伙计久久| 国产精品视频一二三| 亚洲美女免费视频| 日本强好片久久久久久aaa| 麻豆精品久久久| 91丨porny丨蝌蚪视频| 欧美日韩国产精选| 久久久亚洲国产美女国产盗摄| 亚洲视频免费在线| 精品中文字幕一区二区| 在线欧美日韩国产| 国产精品第四页| 久久99久久精品欧美| 不卡的电影网站| 久久综合一区二区| 日韩av一二三| 欧美偷拍一区二区| 亚洲色图欧洲色图| 成人自拍视频在线观看| 久久久亚洲国产美女国产盗摄 | 88在线观看91蜜桃国自产| 26uuu成人网一区二区三区| 亚洲成人资源网| 欧美日韩第一区日日骚| 亚洲精品国久久99热| 99精品久久免费看蜜臀剧情介绍| 欧美一级精品大片| 天天影视色香欲综合网老头| 在线观看免费视频综合| 一区二区三区国产| 欧洲一区二区三区在线| 亚洲3atv精品一区二区三区| 欧美综合亚洲图片综合区| 依依成人精品视频| 欧美日韩小视频| 捆绑调教美女网站视频一区| 日韩一二三四区| 国产91精品一区二区| 亚洲日本丝袜连裤袜办公室| 欧美视频中文一区二区三区在线观看 | 国产在线精品一区在线观看麻豆| 88在线观看91蜜桃国自产| 精品综合免费视频观看| 国产精品国产精品国产专区不片| 91丨九色丨尤物| 蜜芽一区二区三区| 日本一区二区三区国色天香 | 亚洲啪啪综合av一区二区三区| 91视频你懂的| 琪琪久久久久日韩精品| 中文字幕av免费专区久久| 欧美综合在线视频| 成人午夜激情在线| 久久99国产乱子伦精品免费| 亚洲欧美激情插| 久久久久久免费毛片精品|