基于python中的TCP及UDP(詳解)
python中是通過套接字即socket來實現(xiàn)UDP及TCP通信的。有兩種套接字面向連接的及無連接的,也就是TCP套接字及UDP套接字。
TCP通信模型

創(chuàng)建TCP服務器
偽代碼:
ss = socket() # 創(chuàng)建服務器套接字 ss.bind() # 套接字與地址綁定 ss.listen() # 監(jiān)聽連接 inf_loop: # 服務器無限循環(huán) cs = ss.accept() # 接受客戶端連接 comm_loop: # 通信循環(huán) cs.recv()/cs.send() # 對話(接收/發(fā)送) cs.close() # 關閉客戶端套接字 ss.close() # 關閉服務器套接字#(可選)
TCP時間戳服務器:
import socket
from time import ctime
HOST = ''
PORT = 8099
BUFSIZE = 1024
ADDR = (HOST, PORT)
tcpSerSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcpSerSock.bind(ADDR)
tcpSerSock.listen(5)
while True:
print("等待連接......")
tcpCliSock, addr = tcpSerSock.accept()
print("...接收到連接:", addr)
while True:
data = tcpSerSock.recv(BUFSIZE)
if not data:
break
tcpCliSock.send('[%s] %s' % (bytes(ctime(), 'utf-8'), data))
tcpCliSock.close()
tcpSerSock.close()
創(chuàng)建TCP客戶端:
偽代碼:
cs = socket() # 創(chuàng)建客戶端套接字 cs.connect() # 嘗試連接服務器 comm_loop: # 通信循環(huán) cs.send() / cs.recv() # 對話(發(fā)送/接收) cs.close() # 關閉客戶端套接字
TCP時間戳客戶端:
import socket
HOST = 'localhost'
PORT = 8099
BUFSIZE = 1024
ADDR = (HOST, PORT)
tcpCliSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcpCliSock.connect(ADDR)
while True:
data = input("> ")
if not data:
break
tcpCliSock.send(data)
data = tcpCliSock.recv(BUFSIZE)
if not data:
break
print(data)
tcpCliSock.close()
UDP通信模型

創(chuàng)建UDP服務器
偽代碼:
ss = socket() # 創(chuàng)建服務器套接字 ss.bind() # 綁定服務器套接字 inf_loop: # 服務器無限循環(huán) cs = ss.recvfrom()/ss.sendto() # 關閉(接收/發(fā)送) ss.close() # 關閉服務器套接字
UDP時間戳服務器:
import socket
from time import ctime
HOST = ''
PORT = 8099
BUFSIZE = 1024
ADDR = (HOST, PORT)
udpSerSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udpSerSock.bind(ADDR)
while True:
print("等待連接......")
data, addr = udpSerSock.recvfrom(BUFSIZE)
udpSerSock.sendto('[%s] %s' % (ctime(), data), addr)
print("...接收到連接:", addr)
udpSerSock.close()
創(chuàng)建UDP客戶端
偽代碼:
cs = socket() # 創(chuàng)建客戶端套接字 comm_loop: # 通信循環(huán) cs.sendto() / cs.recvfrom() # 對話(發(fā)送/接收) cs.close() # 關閉客戶端套接字
UDP時間戳客戶端:
import socket
HOST = 'localhost'
PORT = 8099
BUFSIZE = 1024
ADDR = (HOST, PORT)
udpCliSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udpCliSock.connect(ADDR)
while True:
data = input("> ")
if not data:
break
udpCliSock.sendto(data, ADDR)
data, ADDR = udpCliSock.recvfrom(BUFSIZE)
if not data:
break
print(data)
udpCliSock.close()
以上這篇基于python中的TCP及UDP(詳解)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
- Python實現(xiàn)基于TCP UDP協(xié)議的IPv4 IPv6模式客戶端和服務端功能示例
- Python網(wǎng)絡編程之TCP與UDP協(xié)議套接字用法示例
- Python網(wǎng)絡編程使用select實現(xiàn)socket全雙工異步通信功能示例
- python編程之requests在網(wǎng)絡請求中添加cookies參數(shù)方法詳解
- python網(wǎng)絡編程調(diào)用recv函數(shù)完整接收數(shù)據(jù)的三種方法
- Python網(wǎng)絡編程中urllib2模塊的用法總結(jié)
- python網(wǎng)絡編程之TCP通信實例和socketserver框架使用例子
- python網(wǎng)絡編程 使用UDP、TCP協(xié)議收發(fā)信息詳解
相關文章
python中pandas.DataFrame對行與列求和及添加新行與列示例
pandas是python環(huán)境下最有名的數(shù)據(jù)統(tǒng)計包,而DataFrame翻譯為數(shù)據(jù)框,是一種數(shù)據(jù)組織方式,這篇文章主要給大家介紹了python中pandas.DataFrame對行與列求和及添加新行與列的方法,文中給出了詳細的示例代碼,需要的朋友可以參考借鑒,下面來一起看看吧。2017-03-03
Python實現(xiàn)在某個數(shù)組中查找一個值的算法示例
今天小編就為大家分享一篇Python實現(xiàn)在某個數(shù)組中查找一個值的算法示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-06-06
python讀取與處理netcdf數(shù)據(jù)方式
今天小編就為大家分享一篇python讀取與處理netcdf數(shù)據(jù)方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02

