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...