python UDP-數據報協議

基于udp協議通信的套接字

服務端

 1 from socket import *
 2 
 3 server = socket(AF_INET, SOCK_DGRAM)  # SOCK_DGRAM=>數據報協議
 4 server.bind(('127.0.0.1', 8080))
 5 
 6 print('start....')
 7 while True:
 8     data, client_addr = server.recvfrom(1024)  # (b'hello', ('127.0.0.1', 49318))
 9     server.sendto(data.upper(), client_addr)
10 
11 server.close()

?

?

客戶端

 1 from socket import *
 2 
 3 client = socket(AF_INET, SOCK_DGRAM)  # SOCK_DGRAM=>數據報協議
 4 
 5 while True:
 6     msg = input('>>: ').strip()
 7     client.sendto(msg.encode('utf-8'), ('127.0.0.1', 8080))
 8     data, server_addr = client.recvfrom(1024)
 9     print(data)
10 
11 client.close()

?

?

數據報協議的特點1

當發送的數據報大于接收數據報的緩沖區大小時:

  在windows系統: 接收端會拋出異常

  在Linux系統: 接收端不會拋出異常, 會丟棄掉多余的數據

?

服務端

1 from socket import *
2 
3 server = socket(AF_INET, SOCK_DGRAM)  # SOCK_DGRAM=>數據報協議
4 server.bind(('127.0.0.1', 8081))
5 
6 server.recvfrom(1)

>>>OSError: [WinError 10040] 一個在數據報套接字上發送的消息大于內部消息緩沖區或其他一些網絡限制,或該用戶用于接收數據報的緩沖區比數據報小。

?

客戶端

1 from socket import *
2 
3 client = socket(AF_INET, SOCK_DGRAM)  # SOCK_DGRAM=>數據報協議
4 
5 client.sendto(b'hello', ('127.0.0.1', 8081))

?

?

數據報協議的特點2

UDP協議沒有粘包問題

UD協議能夠穩定傳輸數據的最大數據量為512Bytes

?

服務端

 1 from socket import *
 2 
 3 server = socket(AF_INET, SOCK_DGRAM)  # SOCK_DGRAM=>數據報協議
 4 server.bind(('127.0.0.1', 8081))
 5 
 6 data1 = server.recvfrom(1024)
 7 print('第一次接收: ', data1)
 8 data2 = server.recvfrom(1024)
 9 print('第二次接收: ', data2)
10 data3 = server.recvfrom(1024)
11 print('第三次接收: ', data3)

>>>第一次接收: (b'hello', ('127.0.0.1', 55249))
>>>第二次接收: (b'world', ('127.0.0.1', 55249))
>>>第三次接收: (b'egon', ('127.0.0.1', 55249))

?

客戶端

1 from socket import *
2 
3 client = socket(AF_INET, SOCK_DGRAM)  # SOCK_DGRAM=>數據報協議
4 
5 client.sendto(b'hello', ('127.0.0.1', 8081))
6 client.sendto(b'world', ('127.0.0.1', 8081))
7 client.sendto(b'egon', ('127.0.0.1', 8081))

?

轉載于:https://www.cnblogs.com/earon/p/9575578.html

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

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

相關文章

Mysql Lost connection to MySQL server at ‘reading initial communication packet', system error: 0

一、問題描述: 在服務器端可以正常連接并操作mysql,但是在windows端使用navicat工具遠程ssh連接就出現下面錯誤。 1、服務器端: 2、windows端navicat連接 3、原因 原來我今天在做主從配置的時候,將 /etc/my.cnf 配置文件中的b…

自定義ProgressBar(圓)

2019獨角獸企業重金招聘Python工程師標準>>> <lib.view.progressbar.ColorArcProgressBarandroid:layout_width"match_parent"android:layout_height"220dip"android:id"id/barInterest"android:layout_centerInParent"true&…

C# Task用法詳解

概述Task是微軟在.Net 4.0時代推出來的&#xff0c;Task看起來像一個Thread&#xff0c;實際上&#xff0c;它是在ThreadPool的基礎上進行的封裝&#xff0c;Task的控制和擴展性很強&#xff0c;在線程的延續、阻塞、取消、超時等方面遠勝于Thread和ThreadPool&#xff0c;所以…

函數調用堆棧圖

轉載于:https://www.cnblogs.com/DeeLMind/p/7617972.html

jquery運動

在前面封裝的move.js框架&#xff0c;在jquery中有同樣封裝好的功能animate()。使用方法非常類似&#xff0c;下面我們看看animate的使用方法&#xff0c;有了原生的運動方法&#xff0c;然后再使用jquery的運動方法就會變得非常簡單。 animate()語法 $(selector).animate({par…

Session的原理,大型網站中Session方面應注意什么?

一、Session和Cookie的區別 Session是在服務器端保持會話數據的一種方法&#xff08;通常用于pc端網站保持登錄狀態&#xff0c;手機端通常會使用token方式實現&#xff09;&#xff0c;存儲在服務端。 Cookie是在客戶端保持用戶數據&#xff0c;存儲位置是客戶端&#xff08…

MySQL5.5讀寫分離之mysql-proxy

通常一個網站在初期訪問量都比較小&#xff0c;所以一般的小架構足以支撐。但是&#xff0c;當網站逐漸發展起來后&#xff0c;隨之而來的是大量的訪問&#xff0c;這時候最先出現的瓶頸就是數據庫了。因為數據的寫入讀取操作&#xff08;I/O&#xff09;是集群中響應速度最慢的…

兩圓相交求面積 hdu5120

轉載 兩圓相交分如下集中情況&#xff1a;相離、相切、相交、包含。 設兩圓圓心分別是O1和O2&#xff0c;半徑分別是r1和r2&#xff0c;設d為兩圓心距離。又因為兩圓有大有小&#xff0c;我們設較小的圓是O1。 相離相切的面積為零&#xff0c;代碼如下&#xff1a; [cpp] view …

Python_list部分功能介紹

x.append():在列表尾部添加一個元素 x.clear():把列表清空 x.count():判斷某個元素出現的次數 x.extend():合并兩個列表&#xff0c;或者一個元組 x.index():獲取元素下標 x.insert():指定下標添加元素 x.pop():移除某一元素&#xff0c;移除的元素可獲取 x.remove():移除指定的…

一招解決開發環境問題 —— 遠程容器開發指南

前言使用C作為主要開發語言的程序猿們應該會認同搭建開發環境是一件煩人的事情。為了編譯一個程序不僅需要下載各種依賴包&#xff0c;還可能面臨本地系統不兼容、編譯器版本不一致、包版本沖突等各種問題。筆者在運營iLogtail開源社區的過程中發現開發和調試環境問題也是成員問…

php中常用的加密方式

一、md5 要說php中的最常用的加密方式&#xff0c;md5可以說是當仁不讓。 使用起來也很簡單便捷。 注&#xff1a;使用方式請看 六、md5加密方式的漏洞及解決方案 二、password_hash 作為php5.5以上版本專門用于加密的方式&#xff0c;自然有其獨到之處。 使用方式鏈接&a…

解決問題的策略-分而治之

一個宏偉的目標看上去遙不可及&#xff0c;這怎么可能做成呢&#xff1f;但是你把這些目標分解成一個一個的小目標&#xff0c;小目標再往下分解&#xff0c;分解到最后&#xff0c;分解成細枝末節時你會發現&#xff0c;這事其實是可以做的。這個做成了再往下走一步&#xff0…

UITabBarController的基本原理及使用(一)

前言 UITabBarController在iOS開發中是一個高頻使用的控制器&#xff0c;典型的案例如QQ、微信均使用UITabBarController布局。本文將從一個新建工程&#xff0c;和大家一起了解UITabBarController的基本原理和使用方法。 基本概念 UITabBarController能夠方便地管理多個控制器…

word-vba-microsoft(中英文)

中文 https://msdn.microsoft.com/zh-cn/vba/word-vba/articles/view-displaypageboundaries-property-word 英文 https://msdn.microsoft.com/en-us/vba/word-vba/articles/view-displaypageboundaries-property-word轉載于:https://www.cnblogs.com/itzxy/p/7625915.html

C# 多線程ThreadPool用法舉例

概述ThreadPool是.Net Framework 2.0版本中出現的。自從Task出來以后&#xff0c;ThreadPool已經很少用了&#xff0c;但是一些老的代碼或者一些古老的程序猿還是會用到他&#xff0c;所以我們可以不用它&#xff0c;但是還是有必須學習和了解他.ThreadPool用法舉例static void…

Mysql實現主從復制(一主雙從)

一、環境介紹 LNMP&#xff08;centos7&#xff0c;mysql5.6&#xff09; vmware workstation pro配置了3個虛擬機&#xff0c;均安裝了LNMP環境&#xff1a; master&#xff1a; 192.168.0.105 slave&#xff1a; 192.168.0.106 、192.168.0.107 二、原理 &a…

Elasticsearch學習筆記-04.3批處理

除了創建、更新和刪除個別文檔&#xff0c;Elasticsearch還提供了使用_bulk API的上述操作的批量操作方法。這個功能很重要&#xff0c;因為他提供了一種有效的機制來在盡可能少的網絡傳輸過程中執行多次操作。 作為一個快速示例&#xff0c;下面的命令在一次批量操作中索引了兩…

接口文檔神器Swagger(下篇)

本文來自網易云社區作者&#xff1a;李哲二、Swagger-springmvc原理解析上面介紹了如何將springmvc和springboot與swagger結合&#xff0c;通過簡單配置生成接口文檔&#xff0c;以及介紹了swagger提供的一些注解。下面將介紹swagger是如何做到與springmvc結合&#xff0c;自動…

php實現mysql分表

一、場景說明 1、為什么要進行分表 隨著數據量的不斷增大&#xff0c;一張表中的數據肯定也會越來越多&#xff0c;甚至達到百萬甚至千萬級。我們通常會通過搭建mysql集群&#xff08;主從同步&#xff09;&#xff0c;讀寫分離來實現優化數據庫查詢執行效率。 但是由于數據…

利用python進行數據分析D1——ch02引言

基礎的課程還沒學完&#xff0c;就來這本了&#xff0c;因為我平時的研究還是以數據的處理為主。把自己的事做好做細致讀了一下介紹部分&#xff0c;下載書里用到的數據&#xff0c;下載地址&#xff1a;https://github.com/wesm/pydata-book 如果你需要完成以下幾大類任務&…