最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python socket網(wǎng)絡(luò)編程TCP/IP服務(wù)器與客戶端通信

 更新時(shí)間:2017年01月05日 10:37:44   投稿:lqh  
這篇文章主要介紹了Python socket網(wǎng)絡(luò)編程TCP/IP服務(wù)器與客戶端通信的相關(guān)資料,這里對(duì)Scoket 進(jìn)行詳解并創(chuàng)建TCP服務(wù)器及TCP 客戶端實(shí)例代碼,需要的朋友可以參考下

Python socket網(wǎng)絡(luò)編程

初學(xué) python,前段時(shí)間買(mǎi)了兩本書(shū)《python 編程從入門(mén)到實(shí)踐》《Python 核心編程第三版》,第一本書(shū)主要講的是一些基本語(yǔ)法和一些基本的使用方法,而第二本則深入很多,自己看來(lái)也是一知半解,剛好看到了這部分網(wǎng)絡(luò)編程,依然有好多不太理解的地方,不過(guò)想來(lái)通過(guò)自己不斷的摸索,不斷地搜尋資料學(xué)習(xí),早晚應(yīng)該會(huì)變得通透吧.......

這部分主要使用的模塊就是 socket 模塊,在這個(gè)模塊中可以找到 socket()函數(shù),該函數(shù)用于創(chuàng)建套接字對(duì)象,套接字也有自己的方法集,這些方法可以實(shí)現(xiàn)基于套接字的網(wǎng)絡(luò)通信。

socket()模塊函數(shù)

要?jiǎng)?chuàng)建套接字,必須使用 socket.socket()函數(shù),他一般的語(yǔ)法如下

socket(socket_family, socket_type, protocol=0)

其中socket_family是 AF_UNIX或 AF_INET,socket_type 是 SOCK_STREAM 或 SOCK_DGRAM,protocol 通常省略,默認(rèn)=0.

所以創(chuàng)建 TCP/IP 套接字,可以使用下面的方式調(diào)用 socket.socket().

tcpSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

同樣創(chuàng)建 UDP/IP 套接字,使用下面的方法調(diào)用

udpSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

創(chuàng)建 TCP 服務(wù)器

創(chuàng)建 TCP 服務(wù)器的流程基本如下,并非正真正的代碼

ss = socket()          #創(chuàng)建服務(wù)器套接字
    ss.bind()              #套接字與地址綁定
    ss.listen()             #監(jiān)聽(tīng)連接
    inf_loop:             #服務(wù)器無(wú)限循環(huán)
        cs = ss.accepr()   #接受客戶端連接
        comm_loop:      #通信循環(huán)
            cs.recv()/cs.send()   #對(duì)話(接收/發(fā)送)
        cs.close()        #關(guān)閉客戶端套接字
    ss.close()            #關(guān)閉服務(wù)器套接字(可選)

實(shí)際中創(chuàng)建 TCP 服務(wù)器基本流程就如上邊所說(shuō),可能稍有不同但基本思路應(yīng)該是相通的,下邊是真正穿件服務(wù)器的代碼:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from socket import *      #將 socket 屬性引入到命名空間

HOST = ''          #這是對(duì) bind()方法的標(biāo)識(shí)表示可以使用任何可用的地址
PORT = 21571      #端口號(hào)
BUFSIZ = 1024     #緩沖區(qū)大小,1kb
ADDR = (HOST,PORT)   #地址????

tcpSerSocket = socket(AF_INET,SOCK_STREAM)    #創(chuàng)建 tcp 套接字
tcpSerSocket.bind(ADDR)           #將地址綁定到套接字上
tcpSerSocket.listen(5)            #設(shè)置并啟動(dòng)套接字監(jiān)聽(tīng)

while True:        #無(wú)限循環(huán),等待客戶端連接
  print('waiting for connection...')   
  tcpCliSocket,addr = tcpSerSocket.accept()    #被動(dòng)接受客戶端連接     
  print('...connected from:',addr)

  while True:      #對(duì)話循環(huán),等待客戶端發(fā)送消息
    data = tcpCliSocket.recv(BUFSIZ)   #接收客戶端消息
    if not data:     #如果消息是空白,跳出對(duì)話循環(huán),關(guān)閉當(dāng)前連接
      break
    tcpCliSocket.send(data)   #如果收到消息,將消息原封不動(dòng)返回客戶端

  tcpCliSocket.close()
tcpSerSocket.close()

創(chuàng)建 TCP 客戶端

同上邊一樣,一個(gè)簡(jiǎn)單的非代碼流程

cs = socket()    #創(chuàng)建客戶端套接字
    cs.connect()     #嘗試連接服務(wù)器
    comm_loop:     #通信循環(huán)
        cs.send()/cs.recv()  #對(duì)話(發(fā)送/接收)
    cs.close()       #關(guān)閉客戶端套接字

實(shí)際中創(chuàng)建客戶端也是翻譯上邊的步驟

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from socket import *

HOST = 'localhost'    #服務(wù)器的主機(jī)名
PORT = 21571     #端口號(hào)
BUFSIZ = 1024     #緩沖區(qū)
ADDR = (HOST,PORT)   #地址

tcpCliSocket = socket(AF_INET,SOCK_STREAM)  #創(chuàng)建客戶端套接字
tcpCliSocket.connect(ADDR)     #連接服務(wù)器

while True:        #通信循環(huán)
  data = input('> ')    #客戶端輸入信息
  if not data:   #如果輸入信息為空,則跳出循環(huán),關(guān)閉通信
    break

  data = str.encode(data)      
  tcpCliSocket.send(data)   #發(fā)送客戶端信息
  data = tcpCliSocket.recv(BUFSIZ)   #接受服務(wù)器返回信息
  if not data:    #如果服務(wù)器未返回信息,關(guān)閉通信循環(huán)
    break
  print('get:',data.decode('utf-8'))

tcpCliSocket.close()

當(dāng)然,這只是最基礎(chǔ)的通信,而且關(guān)于主機(jī)名,端口號(hào)之類的東西暫時(shí)還不是很懂,目前所做的只是在同一臺(tái)電腦上通信,端口號(hào)也需要一致,如果不同的電腦進(jìn)行通信該怎么做?我還只是個(gè)小白.....

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • Python虛擬環(huán)境venv用法詳解

    Python虛擬環(huán)境venv用法詳解

    這篇文章主要介紹了Python虛擬環(huán)境venv用法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • pandas之分組統(tǒng)計(jì)列聯(lián)表pd.crosstab()問(wèn)題

    pandas之分組統(tǒng)計(jì)列聯(lián)表pd.crosstab()問(wèn)題

    這篇文章主要介紹了pandas之分組統(tǒng)計(jì)列聯(lián)表pd.crosstab()問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • 詳解Python中的內(nèi)建函數(shù),可迭代對(duì)象,迭代器

    詳解Python中的內(nèi)建函數(shù),可迭代對(duì)象,迭代器

    這篇文章主要介紹了Python內(nèi)建函數(shù),可迭代對(duì)象,迭代器,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Python3中的2to3轉(zhuǎn)換工具使用示例

    Python3中的2to3轉(zhuǎn)換工具使用示例

    這篇文章主要介紹了Python3中的2to3轉(zhuǎn)換工具使用示例,本文詳細(xì)講解了使用的步驟,并總結(jié)了一些使用注意事項(xiàng),需要的朋友可以參考下
    2015-06-06
  • Python Beautiful Soup 使用示例詳解

    Python Beautiful Soup 使用示例詳解

    Beautiful Soup 是一個(gè) Python 庫(kù),用于解析 HTML 和 XML 文檔,并提供簡(jiǎn)單而直觀的 API 來(lái)遍歷文檔樹(shù)、搜索元素、提取內(nèi)容等,這篇文章主要介紹了Python Beautiful Soup 使用示例詳解,需要的朋友可以參考下
    2024-05-05
  • python3 pillow生成簡(jiǎn)單驗(yàn)證碼圖片的示例

    python3 pillow生成簡(jiǎn)單驗(yàn)證碼圖片的示例

    本篇文章主要介紹了python3 pillow生成簡(jiǎn)單驗(yàn)證碼圖片的示例,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2017-09-09
  • Python實(shí)現(xiàn)在tkinter中使用matplotlib繪制圖形的方法示例

    Python實(shí)現(xiàn)在tkinter中使用matplotlib繪制圖形的方法示例

    這篇文章主要介紹了Python實(shí)現(xiàn)在tkinter中使用matplotlib繪制圖形的方法,結(jié)合實(shí)例形式分析了Python使用tkinter與matplotlib進(jìn)行正弦曲線圖形繪制的相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01
  • Python導(dǎo)入Excel表格數(shù)據(jù)并以字典dict格式保存的操作方法

    Python導(dǎo)入Excel表格數(shù)據(jù)并以字典dict格式保存的操作方法

    本文介紹基于Python語(yǔ)言,將一個(gè)Excel表格文件中的數(shù)據(jù)導(dǎo)入到Python中,并將其通過(guò)字典格式來(lái)存儲(chǔ)的方法,感興趣的朋友一起看看吧
    2023-01-01
  • Python爬蟲(chóng)后獲取重定向url的兩種方法

    Python爬蟲(chóng)后獲取重定向url的兩種方法

    這篇文章主要介紹了Python爬蟲(chóng)后獲取重定向url的兩種方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • 在python中只選取列表中某一縱列的方法

    在python中只選取列表中某一縱列的方法

    今天小編就為大家分享一篇在python中只選取列表中某一縱列的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11

最新評(píng)論

彰化县| 岳阳县| 松溪县| 忻城县| 双辽市| 定兴县| 久治县| 麻城市| 靖江市| 博湖县| 岳阳市| 喀喇沁旗| 繁峙县| 兴义市| 定安县| 虹口区| 聂荣县| 开江县| 兴城市| 三亚市| 孟村| 黄龙县| 普兰店市| 宁明县| 托里县| 抚松县| 临澧县| 陇川县| 许昌县| 华蓥市| 顺平县| 宁德市| 湛江市| 弥勒县| 屏东市| 顺义区| 法库县| 福鼎市| 东乡县| 东安县| 衡山县|