Python網絡編程之TCP服務器客戶端(二)

  傳輸控制協議(官方術語為TCP/IP協議)是互聯網的重要組成部分。TCP的第一個版本是在1974年定義的,它建立在網際層協議(IP)提供的數據包傳輸技術之上。TCP使得應用程序可以使用連續的數據流進行相互通信,除非出現網絡原因導致連接中斷等意外情況,否則TCP都能保證數據流完整的傳輸給接收方,而不會發生丟包、重包或亂序的問題。

  傳輸文檔和文件的協議幾乎都是使用TCP的,這包括通過瀏覽器瀏覽網頁、文件傳輸以及用于電子郵件傳輸的所有主要機制。TCP協議是雙向通信的,需要先建立連接然后才能互相通信。其中涉及到一些通信、網絡相關方面的知識,這里不進行詳細解釋,如果不大了解,請自行去查看有關資料。

  TCP服務器的建立可以歸納如下:(1).開啟套接字(socket);(2).綁定服務端口;(3).開始監聽;(4).等待客戶端連接;(5).和客戶端對話。TCP服務器源程序代碼如下所示:

 1 #!/usr/bin/env python
 2 # coding=utf8
 3 
 4 from socket import *
 5 
 6 host = ''
 7 port = 12345
 8 bufsiz = 1024
 9 
10 tcpSerSock = socket(AF_INET, SOCK_STREAM)   # 開啟套接字
11 tcpSerSock.bind((host, port))               # 綁定服務端口
12 tcpSerSock.listen(5)                        # 開始監聽
13 
14 while True:
15     print 'Please waiting for connection...'      # 等待客戶端連接
16     tcpCliSock, addr = tcpSerSock.accept()
17     print '...connected from:', addr
18 
19     while True:
20         data = tcpCliSock.recv(bufsiz)      # 接收客戶端信息
21         if not data:
22             break
23         tcpCliSock.send('[%s] %s' % ("You send:", data))    # 給客戶端發送信息
24     tcpCliSock.close()
25     
26 tcpSerSock.close()

運行結果如下所示:

Please waiting for connection...

  TCP客戶端的創建可總結如下:(1).開啟套接字(socket);(2).連接服務器;(3).開始對話。TCP客戶端源程序代碼如下所示:

 1 #!/usr/bin/env python
 2 # coding=utf8
 3 
 4 from socket import *
 5 
 6 host = 'localhost'
 7 port = 12345
 8 bufsiz = 1024
 9 
10 tcpCliSock = socket(AF_INET, SOCK_STREAM)    # 開啟套接字
11 tcpCliSock.connect((host, port))             # 連接到服務器
12 
13 while True:
14     data = raw_input('> ')      # 等待輸入
15     if not data:
16         break
17     tcpCliSock.send(data)       # 發送信息
18     response = tcpCliSock.recv(bufsiz)       # 接受返回信息
19     if not response:
20         break
21     print response
22 
23 tcpCliSock.close()

執行客戶端源程序文件,可知:需要我們輸入信息,才能顯示返回信息;而回過頭再看一下服務端的運行結果,顯示結果如下所示:

Please waiting for connection...
...connected from: ('127.0.0.1', 52089)

注意:運行結果中的52089在不同情況下的顯示是不一樣的。接著,我們來驗證一下客戶端接收返回信息的功能,例如向客戶端源程序執行結果中輸入:Welcome to visit elijah7i's blog !?

運行結果如下所示:

> Welcome to visit elijah7i's blog !
[You send:] Welcome to visit elijah7i's blog !
> 

?

轉載于:https://www.cnblogs.com/mix88/p/6185048.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/394372.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/394372.shtml
英文地址,請注明出處:http://en.pswp.cn/news/394372.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

請寫出至少5個html塊元素標簽_34道常見的HTML+CSS面試題(附答案)

公眾號【傳智播客博學谷】回復關鍵詞:前端 PS Java(100G) Python(80G) 大數據 區塊鏈 測試 PPT JS(40g300教程) HTML 簡歷 領取相關學習資料!一、HTML1、標簽上title屬性與alt屬性的區別是什么?alt屬性是為了給那些不能看到你文檔中圖像的瀏覽…

leetcode劍指 Offer 42. 連續子數組的最大和(動態規劃)

輸入一個整型數組,數組里有正數也有負數。數組中的一個或連續多個整數組成一個子數組。求所有子數組的和的最大值。 要求時間復雜度為O(n)。 示例1: 輸入: nums [-2,1,-3,4,-1,2,1,-5,4] 輸出: 6 解釋: 連續子數組 [4,-1,2,1] 的和最大,為 6。 常數…

nginx mozilla_我發現Mozilla的私人瀏覽模式存在重大缺陷。

nginx mozillaby Konark Modi通過Konark Modi 我發現Mozilla的私人瀏覽模式存在重大缺陷。 (I found a major flaw in Mozilla’s private browsing mode.) If left unfixed this flaw could have wreaked havoc but Mozilla’s prompt fixes saved the day.如果不加以解決&am…

4月8日隨筆

周一滿課,晚上唱紅歌,寫概率論。。 轉載于:https://www.cnblogs.com/wxy2000/p/10686058.html

linux開機出現一下錯誤Give root password for maintenance (or type Control-D to continue):

linux開機出現一下錯誤Give root password for maintenance (or type Control-D to continue):第一種錯誤的情況:由于錯誤的編輯/etc/fstab文件 而引起的不能正常進入系統。假如你將某一個分區或者磁盤最后一個參數設置為1或2時,系統默認會在開機過程中檢…

[閱讀筆記]Zhang Y. 3D Information Extraction Based on GPU.2010.

1.立體視覺基礎 深度定義為物體間的距離 視差定義為同一點在左圖(reference image) 和右圖( target image) 中的x坐標差。 根據左圖中每個點的視差得到的灰度圖稱為視差圖。 那么根據三角幾何關系可以由視差(xR - xT ) 計算出深度.bcamera基線距離,f焦距。 離相機越…

r語言 小樹轉化百分數_“小樹”機器人1.0新品發布會

產品初衷伴隨著AI的落地,從最開始的刷臉支付,再到自動駕駛,還是現在互聯網的5G時代,AI無疑都是產業變革的核心動力。那么作為一家科技創新的企業,小樹機器人從建立之初就在不斷的創新,我們致力于從智能出發…

mac安裝python虛擬環境_詳解Mac配置虛擬環境Virtualenv,安裝Python科學計算包

最近正在自學Python做科學計算,當然在很多書籍和公開課里最先做的就是安裝Numpy, Scipy, Matplotlib等包,不過每次安裝單獨的包時,都會有各種問題導致安裝失敗或者調用失敗。比如,遇到 Exception 和 Error:明明已經提示…

破解系統設計訪談:Twitter軟件工程師的提示

by Zhia Hwa Chong志華化 破解系統設計訪談:Twitter軟件工程師的提示 (Crack the System Design interview: tips from a Twitter software engineer) I recently wrote about how I landed offers from multiple top-tier tech companies. During my interview pr…

leetcode474. 一和零(動態規劃)

在計算機界中,我們總是追求用有限的資源獲取最大的收益。 現在,假設你分別支配著 m 個 0 和 n 個 1。另外,還有一個僅包含 0 和 1 字符串的數組。 你的任務是使用給定的 m 個 0 和 n 個 1 ,找到能拼出存在于數組中的字符串的最大…

jQuery對象與DOM對象的相互轉換

一、檢測方式上的區別 檢測DOM對象: if (Object.nodeType) 檢測jQery對象: if (Object.jquery) 二、轉換方式 jQuery對象轉DOM對象: var DOMObject jQueryObject.get([index]); // 或者 var DOMObject jQueryObject[index]; DOM對象轉jQuer…

ProcessExplore 最新版

http://files.cnblogs.com/files/zhangdongsheng/ProcessExplorer.zip轉載于:https://www.cnblogs.com/zhangdongsheng/p/6195743.html

javascript對象包含哪些要素_讓人迷糊的JavaScript對象(Object一)

對于很多初學的小伙伴聽到JavaScript內置對象、BOM、DOM、WEB API等關鍵詞基本上都是迷糊,不是很明白他們之間的關系,以及他們是如果建立聯系的。雖然我們現在小伙伴在學VUE,React等框架能簡化我們的操作,但是遇到一些基礎的問題還…

被吐嘈的NodeJS的異常處理

被吐嘈的NodeJS的異常處理 許多人都有這樣一種映像,NodeJS比較快; 但是因為其是單線程,所以它不穩定,有點不安全,不適合處理復雜業務; 它比較適合對并發要求比較高,而且簡單的業務場景。 在Expr…

javascript關鍵字_讓我們揭開JavaScript的“ new”關鍵字的神秘面紗

javascript關鍵字by Cynthia Lee辛西婭李(Cynthia Lee) 讓我們揭開JavaScript的“ new”關鍵字的神秘面紗 (Let’s demystify JavaScript’s ‘new’ keyword) Over the weekend, I completed Will Sentance’s JavaScript: The Hard Parts. It might not sound like the most…

查看 rabbitmq 啟動websocket 提示404_RabbitMQ在windows下安裝(筆記)

先保證Java開發環境一切正常,【jdk,maven】,然后下載兩個文件,1,下載OTPhttps://www.rabbitmq.com/download.html 下載地址下載RabbitMQ Downloading and Installing RabbitMQ:地址安裝沒有別的操作,一直下一步就好;2&…

[Leetcode] Longest Valid Parentheses

找出字串裡最長的合法括號組 簡單說&#xff0c;一樣stack搜尋合法parenth&#xff0c;把不合法的 ( & ) index 紀錄下來&#xff0c;最後算index間的差值取最大就是最長的 public class Solution{/// <summary>/// 把不合法的( )的index記下來&#xff0c;取最長的差…

leetcode35. 搜索插入位置(二分搜索)

給定一個排序數組和一個目標值&#xff0c;在數組中找到目標值&#xff0c;并返回其索引。如果目標值不存在于數組中&#xff0c;返回它將會被按順序插入的位置。 你可以假設數組中無重復元素。 示例 1: 輸入: [1,3,5,6], 5 輸出: 2 代碼 class Solution {public int sear…

[deviceone開發]-do_Album的簡單示例

一、簡介do_Album用來打開手機系統提供的相冊&#xff0c;能選擇一張或多張圖片返回給開發者&#xff0c;通常相冊的圖片比較大&#xff0c;要經過縮放。有的時候用戶也需要把別的地方獲取到到圖片收藏到系統相冊。這個示例簡單展示這個組件的2個基本功能。二、效果圖三、相關下…

公辦低分二本_這六所公辦二本高校的計算機類相關專業值得低分段考生選擇

邯鄲學院——計算機科學與技術近年來&#xff0c;邯鄲學院著力強化“以本為本”理念,堅持“學生中心”“產出導向”原則&#xff0c;加強學科專業建設&#xff0c;獲批國家級特色專業1個&#xff0c;省級重點發展學科3個&#xff0c;省級一流專業7個&#xff0c;英語等3個專業入…