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

Python實(shí)現(xiàn)UDP與TCP通信的示例詳解

 更新時(shí)間:2023年03月23日 16:32:02   作者:Python圖像識別  
UDP是一種無連接的、不可靠的傳輸協(xié)議;TCP是一種可靠的、面向連接的傳輸協(xié)議。這篇文章主要介紹了Python實(shí)現(xiàn)UDP與TCP通信的方法,需要的可以參考一下

1. UDP

UDP是一種無連接的、不可靠的傳輸協(xié)議,相比于TCP,UDP具有數(shù)據(jù)傳輸速度快、傳輸延遲小等優(yōu)點(diǎn),但是不保證數(shù)據(jù)的可靠傳輸,需要應(yīng)用層進(jìn)行數(shù)據(jù)重傳、校驗(yàn)等處理。

下面是一個(gè)簡單的UDP發(fā)送示例代碼:

import socket

UDP_IP = '127.0.0.1'   # 目標(biāo)IP地址
UDP_PORT = 5005        # 目標(biāo)端口號
MESSAGE = b"Hello, World!"   # 要發(fā)送的數(shù)據(jù)

# 創(chuàng)建UDP套接字
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# 發(fā)送數(shù)據(jù)
sock.sendto(MESSAGE, (UDP_IP, UDP_PORT))

# 關(guān)閉套接字
sock.close()

下面是一個(gè)簡單的UDP接收示例代碼:

import socket

UDP_IP = '127.0.0.1'   # 監(jiān)聽IP地址
UDP_PORT = 5005        # 監(jiān)聽端口號

# 創(chuàng)建UDP套接字
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# 綁定套接字到指定IP地址和端口號
sock.bind((UDP_IP, UDP_PORT))

# 接收數(shù)據(jù)
data, addr = sock.recvfrom(1024)   # 一次最多接收1024字節(jié)的數(shù)據(jù)

print("Received message:", data)

# 關(guān)閉套接字
sock.close()

需要注意的是,在UDP通信中,由于數(shù)據(jù)包的大小限制,可能需要對發(fā)送的數(shù)據(jù)進(jìn)行分片處理,同時(shí)也需要對接收到的數(shù)據(jù)進(jìn)行緩存和拼接處理,以保證數(shù)據(jù)的完整性。

在IPv4網(wǎng)絡(luò)中,UDP數(shù)據(jù)包的最大長度為64KB(65535字節(jié)),其中包括IP頭部和UDP頭部的大小。在實(shí)際應(yīng)用中,由于網(wǎng)絡(luò)設(shè)備和操作系統(tǒng)的限制,UDP數(shù)據(jù)包的大小通常會受到一些限制。例如,某些路由器和防火墻可能會限制UDP數(shù)據(jù)包的最大長度,而一些操作系統(tǒng)也可能會對UDP數(shù)據(jù)包進(jìn)行一些限制。

在使用UDP進(jìn)行數(shù)據(jù)傳輸時(shí),需要注意數(shù)據(jù)包的大小限制,盡量避免發(fā)送過大的數(shù)據(jù)包。可以使用getsockopt()方法查詢系統(tǒng)對UDP數(shù)據(jù)包大小的限制,例如:

import socket

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
max_size = sock.getsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF)
print(f"Max size of UDP packet: {max_size} bytes")

2. TCP

TCP是一種可靠的、面向連接的傳輸協(xié)議,提供了數(shù)據(jù)傳輸?shù)目煽啃院屯暾员U希莻鬏斝氏鄬^低。

下面是一個(gè)簡單的TCP服務(wù)端和客戶端示例代碼:

TCP服務(wù)端:

import socket

# 設(shè)置IP地址和端口號
IP = '127.0.0.1'
PORT = 8888

# 創(chuàng)建TCP套接字
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 綁定IP地址和端口號
sock.bind((IP, PORT))

# 開始監(jiān)聽
sock.listen(1)

print(f"Server listening on {IP}:{PORT}...")

# 接受客戶端連接
conn, addr = sock.accept()
print(f"Connected by {addr[0]}:{addr[1]}")

# 接收數(shù)據(jù)
data = conn.recv(1024)
print(f"Received data: {data.decode()}")

# 發(fā)送數(shù)據(jù)
msg = b"Hello, Client!"
conn.sendall(msg)

# 關(guān)閉連接
conn.close()

TCP客戶端:

import socket

# 設(shè)置IP地址和端口號
IP = '127.0.0.1'
PORT = 8888

# 創(chuàng)建TCP套接字
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 連接服務(wù)器
sock.connect((IP, PORT))

# 發(fā)送數(shù)據(jù)
msg = b"Hello, Server!"
sock.sendall(msg)

# 接收數(shù)據(jù)
data = sock.recv(1024)
print(f"Received data: {data.decode()}")

# 關(guān)閉連接
sock.close()

需要注意的是,在TCP通信中,數(shù)據(jù)的傳輸需要通過連接來進(jìn)行,因此需要先建立連接,然后進(jìn)行數(shù)據(jù)傳輸,最后再關(guān)閉連接。由于TCP是面向連接的傳輸協(xié)議,因此需要進(jìn)行三次握手等復(fù)雜的連接建立過程,相比于UDP效率較低,但是可靠性更高。

到此這篇關(guān)于Python實(shí)現(xiàn)UDP與TCP通信的示例詳解的文章就介紹到這了,更多相關(guān)Python UDP TCP通信內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python批量生成條形碼的示例

    python批量生成條形碼的示例

    這篇文章主要介紹了python批量生成條形碼的示例,幫助大家更好的利用python處理圖形,感興趣的朋友可以了解下
    2020-10-10
  • python代理工具mitmproxy使用指南

    python代理工具mitmproxy使用指南

    這篇文章主要介紹了python mitmproxy 使用指南,mitmproxy 可以用來攔截、修改、保存 HTTP/HTTPS 請求。以命令行終端形式呈現(xiàn),類似于 Chrome 瀏覽器開發(fā)者模式的可視化工具,需要的朋友可以參考下
    2019-07-07
  • 解決python3讀取Python2存儲的pickle文件問題

    解決python3讀取Python2存儲的pickle文件問題

    今天小編就為大家分享一篇解決python3讀取Python2存儲的pickle文件問題,具有很好的參考價(jià)值。希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • 每個(gè) Python 開發(fā)者都應(yīng)該知道的7種好用工具(效率翻倍)

    每個(gè) Python 開發(fā)者都應(yīng)該知道的7種好用工具(效率翻倍)

    Python 從一種小的開源語言開始,到現(xiàn)在,它已經(jīng)成為開發(fā)者很受歡迎的編程語言之一。這篇文章主要介紹了每個(gè) Python 開發(fā)者都應(yīng)該知道的7種好用工具(效率翻倍),需要的朋友可以參考下
    2021-03-03
  • Windows 64位下python3安裝nltk模塊

    Windows 64位下python3安裝nltk模塊

    這篇文章主要為大家詳細(xì)介紹了Windows 64位下python3安裝nltk模塊,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • Python實(shí)現(xiàn)遍歷包含大量文件的文件夾

    Python實(shí)現(xiàn)遍歷包含大量文件的文件夾

    在處理大模型的訓(xùn)練數(shù)據(jù)時(shí),經(jīng)常需要遍歷大型文件夾,其中,可能包括數(shù)千萬或數(shù)億個(gè)文件,所以本文為大家整理了Python遍歷包含大量文件的文件夾的方法,希望對大家有所幫助
    2023-04-04
  • 淺談python中的數(shù)字類型與處理工具

    淺談python中的數(shù)字類型與處理工具

    下面小編就為大家?guī)硪黄獪\談python中的數(shù)字類型與處理工具。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08
  • 使用pytorch實(shí)現(xiàn)線性回歸

    使用pytorch實(shí)現(xiàn)線性回歸

    這篇文章主要為大家詳細(xì)介紹了使用pytorch實(shí)現(xiàn)線性回歸,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • python 制作自定義包并安裝到系統(tǒng)目錄的方法

    python 制作自定義包并安裝到系統(tǒng)目錄的方法

    今天小編就為大家分享一篇python 制作自定義包并安裝到系統(tǒng)目錄的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • python實(shí)現(xiàn)從wind導(dǎo)入數(shù)據(jù)

    python實(shí)現(xiàn)從wind導(dǎo)入數(shù)據(jù)

    今天小編就為大家分享一篇python實(shí)現(xiàn)從wind導(dǎo)入數(shù)據(jù),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12

最新評論