Python Socket編程小結

來源:互聯網
上載者:User

標籤:

1、用戶端串連

  用戶端串連有4個步驟:

    (1)建立一個socket對象

        Socket=socket.socket(family,type)

    (2)使用socket的connect方法串連伺服器

        Socket.connect((host,port))

      其中,host是伺服器的IP地址,如果只是知道伺服器的網域名稱,可以通過host = socket.gethostbyname( hostname )獲得。

         port是伺服器開啟的連接埠號碼,通過port=socket.getservbyname(servicename[,protocolname])來尋找服務資訊,該函數將互連網服務名稱和協議的名稱翻譯為連接埠號碼。protocolname為協議名稱,如果有,應該是“TCP”或“UDP”,否則,任何協議都將匹配。

    (3)用戶端和伺服器通過send和recv方法通訊。

    (4)用戶端通過調用socket的close方法來關閉串連。

 

2、伺服器串連

  建立伺服器串連有6個步驟:

    (1)建立socket對象;

    (2)將socket綁定到指定地址上,s.bind(("IP",port))

    (3)偵聽串連,socket.listen(backlog),backlog指定了最多串連數,至少為1,接到串連請求後,這些請求必須排隊,如果隊列已滿,則拒絕請求。

    (4)伺服器通訊端通過socket的accept方法等待客戶請求一個串連:

        connection,address=socket.accept()

      調用accept方法時,socket會進入‘waiting‘(或阻塞)狀態。客戶請求串連時,方法建立串連並返回伺服器。accept方法返回一個含 有倆個元素的元組,形如(connection,address)。第一個元素(connection)是新的socket對象,伺服器通過它與客戶通 信;第二個元素(address)是客戶的internet地址。

    (5)處理階段,伺服器和客戶通過send和recv方法通訊(傳輸資料)。伺服器調用send,並採用字串形式向客戶發送資訊。send方法返回已發送的字 符個數。伺服器使用recv方法從客戶接受資訊。調用recv時,必須指定一個整數來控制本次調用所接受的最大資料量。recv方法在接受資料時會進入 ‘blocket‘狀態,最後返回一個字串,用它來表示收到的資料。如果發送的量超過recv所允許,資料會被截斷。多餘的資料將緩衝於接受端。以後調 用recv時,多餘的資料會從緩衝區刪除。

    (6)傳輸結束,伺服器調用socket的close方法以關閉串連。

 

參考資料:

  1、http://www.jb51.net/article/52078.htm

Python Socket編程小結

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.