基于python中的TCP及UDP(详解)

作者:黑桃不是吃的 时间:2023-12-22 19:54:38 

python中是通过套接字即socket来实现UDP及TCP通信的。有两种套接字面向连接的及无连接的,也就是TCP套接字及UDP套接字。

TCP通信模型

基于python中的TCP及UDP(详解)

创建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)
 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通信模型

基于python中的TCP及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
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()

创建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 = udpCliSock.recvfrom(BUFSIZE)
if not data:
 break
print(data)
udpCliSock.close()

来源:http://www.cnblogs.com/wulaa/p/7787993.html

标签:python,TCP,UDP
0
投稿

猜你喜欢

  • 解决tensorflow 释放图,删除变量问题

    2023-08-10 09:42:47
  • Python自动重新加载模块详解(autoreload module)

    2023-09-19 04:36:12
  • 详解Django关于StreamingHttpResponse与FileResponse文件下载的最优方法

    2021-04-13 08:17:01
  • Django Auth用户认证组件实现代码

    2022-05-02 18:06:01
  • Mysql双主配置的详细步骤

    2024-01-28 14:21:49
  • Python first-order-model实现让照片动起来

    2022-04-13 10:25:48
  • Python深度学习之FastText实现文本分类详解

    2022-09-03 10:35:28
  • CSS文件的编码要和页面的编码相一致

    2010-06-06 13:59:00
  • oracle 服务启动,关闭脚本(windows系统下)

    2009-07-26 08:57:00
  • 发个js从样式表取值的函数

    2008-05-20 12:23:00
  • python中requests库session对象的妙用详解

    2021-10-30 14:42:58
  • GoLang channel关闭状态相关操作详解

    2024-04-26 17:26:52
  • 如何go语言比较两个对象是否深度相同

    2024-02-18 21:21:58
  • win10环境安装kettle与linux环境安装kettle的详细过程

    2022-12-17 09:58:21
  • Python编写屏幕截图程序方法

    2022-10-04 11:11:47
  • 一文详解Python中多进程和进程池的使用方法

    2023-12-01 04:10:12
  • 解决python DataFrame 打印结果不换行问题

    2023-11-20 23:12:25
  • 浅谈购物类网站如何保持视觉设计的一致性

    2009-03-30 16:02:00
  • 15款最佳jQuery LightBox插件

    2010-09-25 12:41:00
  • MySQL字段类型说明

    2007-09-27 19:22:00
  • asp之家 网络编程 m.aspxhome.com