欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python網(wǎng)絡(luò)編程學(xué)習(xí)筆記(五):socket的一些補(bǔ)充

 更新時(shí)間:2014年06月09日 22:01:45   作者:  
前面已經(jīng)為大家介紹了python socket的一些相關(guān)知識(shí),這里為大家補(bǔ)充下,方便需要的朋友

1、半開放socket

利用shutdown()函數(shù)使socket雙向數(shù)據(jù)傳輸變?yōu)閱蜗驍?shù)據(jù)傳輸。shutdown()需要一個(gè)單獨(dú)的參數(shù),該參數(shù)表示了如何關(guān)閉socket。具體為:0表示禁止將來讀;1
表示禁止將來寫;2表示禁止將來讀和寫。

2、timeouts控制超時(shí)

調(diào)用socket的settimeout()函數(shù),向其傳遞參數(shù),表明超時(shí)時(shí)間設(shè)置。當(dāng)訪問一個(gè)socket,如果經(jīng)過了參數(shù)設(shè)定的時(shí)間后,什么都沒有發(fā)生,則會(huì)產(chǎn)生一個(gè)socket.timeout異常。
例如:當(dāng)程序運(yùn)行后,會(huì)等待數(shù)據(jù)傳入。在另一終端,利用telnet連接12345端口。連接成功后,顯示“連接來自:****”,如果此時(shí)5秒內(nèi),終端未進(jìn)行輸入,系
統(tǒng)會(huì)提示連接超時(shí)退出。

代碼如下:

復(fù)制代碼 代碼如下:

# -*- coding: cp936 -*-
##tcp響應(yīng)服務(wù)器
import socket,traceback
host=''
port=12345
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
s.bind((host,port))
s.listen(1)

while 1:
    try:
        clientsock,clientaddr=s.accept()
    except KeyboardInterrupt:
        raise
    except:
        traceback.print_exc()
        continue
    clientsock.settimeout(5)
    try:
        print "連接來自:",clientsock.getpeername()
        while 1:
            data=clientsock.recv(4096)
            if not len(data):
                break
            clientsock.sendall(data)
            clientsock.sendall("\nI get it!\n")
##            t=raw_input('input the word:')
##            clientsock.sendall(t)
    except (KeyboardInterrupt,SystemExit):
        raise
    except socket.timeout:
        print '連接超時(shí)'
        pass
    except:
        traceback.print_exc()

    try:
        clientsock.close()
    except KeyboardInterrupt:
        raise
    except:
        traceback.print_exc()

3、理解網(wǎng)絡(luò)字節(jié)順序

不同的平臺(tái)有不同的二進(jìn)制數(shù)據(jù)編碼方法,為了解決這一總是,一種標(biāo)準(zhǔn)的二進(jìn)制數(shù)據(jù)表示法,稱為網(wǎng)絡(luò)字節(jié)順序。在發(fā)送一個(gè)二進(jìn)制整數(shù)之前,該整數(shù)首先被
轉(zhuǎn)換成網(wǎng)絡(luò)字節(jié)順序。接收方收到后,在使用該數(shù)據(jù)之前,會(huì)先把網(wǎng)絡(luò)字節(jié)順序轉(zhuǎn)換成本地的表示方法。
python的struct模塊提供了把數(shù)據(jù)在python和二進(jìn)制數(shù)據(jù)之間轉(zhuǎn)換的支持。
主要的兩種基本格式:
H:適用于16位整數(shù)
I:適用于32位整數(shù)
驚嘆號(hào)表示struct模塊使用網(wǎng)絡(luò)字節(jié)順序來進(jìn)行編碼和解碼。其它的格式見下表:

Character

Byte order

Size and alignment

@

native

native            湊夠4個(gè)字節(jié)

=

native

standard        按原字節(jié)數(shù)

<

little-endian

standard        按原字節(jié)數(shù)

>

big-endian

standard       按原字節(jié)數(shù)

!

network (= big-endian)

standard       按原字節(jié)數(shù)


常用語句:

struct.pack(fmt,v1,v2,...)將v1,v2按參數(shù)格式進(jìn)行轉(zhuǎn)換。參數(shù)fmt是格式字符
串,這里主要是!I。v1,v2,...表示要轉(zhuǎn)換的python值。
struct.unpack(fmt,string)與pack剛好相反。
例如:

>>> import struct
>>> a=20
>>> str=struct.pack("!I",a)
>>> print repr(str)
'\x00\x00\x00\x14'
>>> print struct.unpack("!I",str)
(20,)

相關(guān)文章

  • Python可視化學(xué)習(xí)之seaborn調(diào)色盤

    Python可視化學(xué)習(xí)之seaborn調(diào)色盤

    seaborn是在matplotlib基礎(chǔ)上封裝的,所以matplotlib的調(diào)色盤seaborn都可以使用。本文系統(tǒng)介紹seaborn調(diào)色盤,相較于matplotlib,有諸多不同,需要的可以參考一下
    2022-02-02
  • Python服務(wù)器創(chuàng)建虛擬環(huán)境跑代碼

    Python服務(wù)器創(chuàng)建虛擬環(huán)境跑代碼

    本文主要介紹了Python服務(wù)器創(chuàng)建虛擬環(huán)境跑代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • python3 json數(shù)據(jù)格式的轉(zhuǎn)換(dumps/loads的使用、dict to str/str to dict、json字符串/字典的相互轉(zhuǎn)換)

    python3 json數(shù)據(jù)格式的轉(zhuǎn)換(dumps/loads的使用、dict to str/str to dict、j

    JSON (JavaScript Object Notation) 是一種輕量級(jí)的數(shù)據(jù)交換格式。它基于ECMAScript的一個(gè)子集。這篇文章主要介紹了python3 json數(shù)據(jù)格式的轉(zhuǎn)換(dumps/loads的使用、dict to str/str to dict、json字符串/字典的相互轉(zhuǎn)換) ,需要的朋友可以參考下
    2019-04-04
  • PyTorch中apex安裝方式和避免踩坑

    PyTorch中apex安裝方式和避免踩坑

    本文主要介紹了PyTorch中apex安裝方式和避免踩坑,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • 利用python查看官方文檔

    利用python查看官方文檔

    這篇文章主要介紹了利用python查看官方文檔,我們?cè)趯W(xué)習(xí)和工作中,總是會(huì)遇到一些問題,或許官方文檔能解決這一問題,下面我們就來看看python如何查看官方文檔吧
    2022-01-01
  • pythotn條件分支與循環(huán)詳解(3)

    pythotn條件分支與循環(huán)詳解(3)

    這篇文章主要介紹了Python條件分支和循環(huán)用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Python邏輯運(yùn)算操作符,條件分支語句,循環(huán)語句等功能與基本用法,需要的朋友可以參考下
    2021-08-08
  • Pycharm使用爬蟲時(shí)遇到etree紅線問題及解決

    Pycharm使用爬蟲時(shí)遇到etree紅線問題及解決

    這篇文章主要介紹了Pycharm使用爬蟲時(shí)遇到etree紅線問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • python實(shí)現(xiàn)按日期歸檔文件

    python實(shí)現(xiàn)按日期歸檔文件

    這篇文章主要介紹了python實(shí)現(xiàn)如何按日期歸檔文件,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2021-01-01
  • python使用openpyxl庫修改excel表格數(shù)據(jù)方法

    python使用openpyxl庫修改excel表格數(shù)據(jù)方法

    今天小編就為大家分享一篇python使用openpyxl庫修改excel表格數(shù)據(jù)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • python畫圖把時(shí)間作為橫坐標(biāo)的方法

    python畫圖把時(shí)間作為橫坐標(biāo)的方法

    今天小編就為大家分享一篇python畫圖把時(shí)間作為橫坐標(biāo)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07

最新評(píng)論