基於python中的TCP及UDP 詳解

2022-10-04 20:45:35 字數 3071 閱讀 9137

python中是通過套接字即socket來實現udp及tcp通訊的。有兩種套接字面向連線的及無連線的,也就是tcp套接字及udp套接字。

tcp通訊模型

建立tcp伺服器

偽**:

ss = socket() # 建立伺服器套接字

ss.bind() # 套接字與位址繫結

ss.listen() # 監聽連線

inf_loop: # 伺服器無限迴圈

cs = ss.accept() # 接受客戶端連線

comm_loop: # 通訊迴圈

cs.recv()/cs.send() # 對話(接收/傳送)

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)

pdwgqgds if not data:

break

tcpclisock.send('[%s] %s' % (bytes(ctime(), 'utf-8'), data))

tcpclisock.close()

tcpsersock.close()

建立tcp客戶端:

偽**:

cs = socket() # 建立客戶端套接字

cs.connect() # 嘗試連線伺服器

comm_loop: # 通訊迴圈

cs.send() / cs.recv() # 對話(傳送/接收)

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通訊模型

建立udp伺服器

偽**:

ss = socket() # 建立伺服器套接字

ss.bind() # 繫結伺服器套接字

inf_loop: # 伺服器無限迴圈

cs = ss.recvfrom()/ss.sendto() # 關閉(接收/傳送)

ss.close() # 關閉伺服器套接字

udp時間戳伺服器:

import socket

from time import ctime

host = ''

port = 8099

bufsize = 1024

awww.cppcns.comddr = (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()

建立udp客戶端

偽**:

cs = socket() # 建立客戶端套接字

comm_loop: # 通訊迴圈

cs.sendto() / cs.recvfrom() # 對話(傳送/接收)

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 = updwgqgdsdpclisock.recvfrom(bufsize)

if not data:

break

print(data)

udpclisock.close()

本文標題: 基於python中的tcp及udp(詳解)

本文位址: /jiaoben/python/210112.html

基於python模擬TCP3次握手連線及傳送資料

原始碼如下 from scapy.all import import logging logging.getlogger scapy.runtime setlevel loggin程式設計客棧g.error target ip 192.168.1.1 target port 80 data get ...

基於TCP的socket通訊過程及例子

socket 通訊的一般過程 阻塞socket 同步socket 程序或執行緒執行到某些socket函式時必須等待該socket事件的發生,如果該事件沒有發生,socket函式不能立即返回,程序或執行緒被阻塞。特點 使用簡單,適合一對一的應答場合,在服務端很少使用,或配合多執行緒使用 函式返回值說明...

python中的TCP鏈結

tcp伺服器 import socket,time import threading s socket.socket socket.af inet,socket.sock stream s.bind 127.0.0.1 8888 s.listen 5 print waiting for connec...