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

Python socket編程實例詳解

 更新時間:2015年05月27日 10:05:48   作者:imzoer  
這篇文章主要介紹了Python socket編程,以實例形式較為詳細的分析了Python中socket模塊的使用技巧,非常具有實用價值,需要的朋友可以參考下

本文實例形式較為詳細的講述了Python socket編程。分享給大家供大家參考。具體如下:

復(fù)制代碼 代碼如下:
sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

上面的代碼創(chuàng)建了一個socket對象。type參數(shù)代表套接字類型,可為SOCK_STREAM(流套接字)和SOCK_DGRAM(數(shù)據(jù)報套接字)。AF_INET表示創(chuàng)建的是ip v4的類型。
復(fù)制代碼 代碼如下:
socket(address_family,type,protocol_type):

上面三個參數(shù)的含義是:

address_family指明要建立哪一類socket。最常用的當(dāng)然是ip協(xié)議,AF_INET。在unix系統(tǒng)中,AF_UNIX也是比較常用的,用于建立unix系統(tǒng)中的進程間通信。

type用于指定通信類型。通常是建立面向連接的流通信。SOCKET_DGRAM是報文通信。如果address_family設(shè)置的是AF_INET,那么對應(yīng)的是TCP和UDP。

protocol用于指定協(xié)議類型。這個參數(shù)是可選的。在建立tcp或者是udp連接的時候他們通常都是0。如果第一個參數(shù)是AF_INET,那么這個參數(shù)表示是ip包中的protocol字段。

【UDP本來就不區(qū)分server和client。所有節(jié)點都是對等的】

第二步是將socket綁定到指定的地址:

復(fù)制代碼 代碼如下:
sock.bind(('localhost',7556))

第三步是使用listen方法監(jiān)聽請求:【listen方法中的參數(shù)指明可接受的最大連接數(shù)】
復(fù)制代碼 代碼如下:
sock.listen(5)

第四步是不斷接收請求:收到連接請求后,這些請求需要排隊,如果隊列滿,就拒絕請求。
復(fù)制代碼 代碼如下:
connection,address = sock.accept()

accept方法返回一個含有兩個元素的 元組(connection,address)。第一個元素connection是新的socket對象,服務(wù)器必須通過它與客戶通信;第二個元素 address是客戶的Internet地址。
第五步是處理階段,服務(wù)器和客戶端通過send和recv方法通信(傳輸數(shù)據(jù))。

如果send成功了,那么對方的緩沖區(qū)已經(jīng)有你發(fā)送的數(shù)據(jù)了。
#調(diào)用recv 時,服務(wù)器必須指定一個整數(shù),它對應(yīng)于可通過本次方法調(diào)用來接收的最大數(shù)據(jù)量。recv方法在接收數(shù)據(jù)時會進入“blocked”狀態(tài),最后返回一個字符 串,用它表示收到的數(shù)據(jù)。如果發(fā)送的數(shù)據(jù)量超過了recv所允許的,數(shù)據(jù)會被截短。多余的數(shù)據(jù)將緩沖于接收端。以后調(diào)用recv時,多余的數(shù)據(jù)會從緩沖區(qū) 刪除(以及自上次調(diào)用recv以來,客戶可能發(fā)送的其它任何數(shù)據(jù))。

connection.settimeout(5)
buf = connection.recv(1024)

具體處理如下:

      if buf == '1':
  connection.send('welcome to python server!')
else:
  connection.send('please go out!')

使用send發(fā)送數(shù)據(jù)給客戶端。客戶端使用recv來接收數(shù)據(jù)。

import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('localhost',7556))
import time
time.sleep(2)
sock.send('1')
print sock.recv(1024)
sock.close()

這就是整個通信過程了。

全部代碼如下:

server端:

#!/usr/bin/env python
import socket
sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.bind(('localhost',7556))
sock.listen(5)
while True:
  connection,address = sock.accept()
  print "client ip is "
  print address
  try:
    connection.settimeout(5)
    buf = connection.recv(1024)
    if buf == '1':
      connection.send('welcome to python server!')
    else:
      connection.send('please go out!')
  except socket.timeout:
    print 'time out'
  connection.close()

client端如下:

#!/usr/bin/env python
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('localhost',7556))
import time
time.sleep(2)
sock.send('1')
print sock.recv(1024)
sock.close()

記住,socket使用完畢之后要關(guān)閉?!旧厦娴拇a,server端忘記關(guān)閉socket了】
當(dāng)然,在socket連接的過程中,最好使用try except來做一下錯誤處理。

注意,accept函數(shù)和recv函數(shù)都是阻塞式的。也就是說,他們一直在等待,直到有客戶端連接過來或者是后者的有數(shù)據(jù)可以接收。

下面是一個FTP的小例子。

使用了多線程來處理每一個請求。

示例代碼點擊此處本站下載。

如果傳輸路徑不存在則建立。

希望本文所述對大家的Python程序設(shè)計有所幫助。

相關(guān)文章

  • gearman的安裝啟動及python API使用實例

    gearman的安裝啟動及python API使用實例

    這篇文章主要介紹了gearman的安裝啟動及python API使用,需要的朋友可以參考下
    2014-07-07
  • tensorflow求導(dǎo)和梯度計算實例

    tensorflow求導(dǎo)和梯度計算實例

    今天小編就為大家分享一篇tensorflow求導(dǎo)和梯度計算實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • Python實現(xiàn)為圖片批量添加隨機水印

    Python實現(xiàn)為圖片批量添加隨機水印

    這篇文章主要為大家詳細介紹了如何使用Python實現(xiàn)為圖片批量添加隨機水印,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-11-11
  • python支持多線程的爬蟲實例

    python支持多線程的爬蟲實例

    今天小編就為大家分享一篇python支持多線程的爬蟲實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Python爬取讀者并制作成PDF

    Python爬取讀者并制作成PDF

    本文是在學(xué)習(xí)了beautifulsoup之后,制作的一個爬取讀者雜志并使用reportlab制作成pdf的python小工具,咱也文藝一下:),分享給大家,有需要的小伙伴參考下吧。
    2015-03-03
  • Python中flatten( ),matrix.A用法說明

    Python中flatten( ),matrix.A用法說明

    這篇文章主要介紹了Python中flatten( ),matrix.A用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • 200行python代碼實現(xiàn)2048游戲

    200行python代碼實現(xiàn)2048游戲

    這篇文章主要為大家詳細介紹了200行Python代碼實現(xiàn)2048游戲,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • python實現(xiàn)爬取圖書封面

    python實現(xiàn)爬取圖書封面

    這篇文章主要為大家詳細介紹了python實現(xiàn)爬取圖書封面的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • 基于Python編寫一個IP地址存活檢查器

    基于Python編寫一個IP地址存活檢查器

    這篇文章主要為大家詳細介紹了如何基于Python編寫一個IP地址存活檢查器,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2024-11-11
  • Django實現(xiàn)上傳圖片功能

    Django實現(xiàn)上傳圖片功能

    這篇文章為大家詳細主要介紹了Django實現(xiàn)上傳圖片,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08

最新評論

临沧市| 宁海县| 尉犁县| 田东县| 二连浩特市| 佳木斯市| 八宿县| 巴青县| 岢岚县| 灵川县| 乌鲁木齐市| 云和县| 阜新市| 独山县| 开远市| 台江县| 新乡县| 鄢陵县| 鹿邑县| 孙吴县| 凤庆县| 苏尼特右旗| 泉州市| 八宿县| 仙游县| 韶山市| 宣恩县| 柳州市| 孝义市| 鹤山市| 读书| 沁源县| 通江县| 青河县| 屏南县| 天门市| 梅州市| 芒康县| 南部县| 武强县| 玉溪市|