一、TCP

1、tcp服务器创建
#创建服务器
from socket import *
from time import ctime #导入ctime
HOST = '' #任意主机
PORT = 21567 #随机提供个端口号
BUFSIZ = 1024 # 缓冲区大小设置为1KB,可以根据网络性能和程序需要改变这个容量
ADDR = (HOST, PORT)
tcpSerSock = socket(AF_INET, SOCK_STREAM) #分配了 TCP 服务器套接字
tcpSerSock.bind(ADDR) #绑定到服务器地址以及开启 TCP 监听器的调用。
tcpSerSock.listen(5) #listen()方法的参数是在连接被转接或拒绝之前,传入连接请求的最大数
"""
一旦进入服务器的无限循环之中,我们就(被动地)等待客户端的连接。当一个连接请求出
现时,我们进入对话循环中,在该循环中我们等待客户端发送的消息。如果消息是空白的,这意
味着客户端已经退出,所以此时我们将跳出对话循环,关闭当前客户端连接,然后等待另一个客
户端连接。如果确实得到了客户端发送的消息,就将其格式化并返回相同的数据,但是会在这些
数据中加上当前时间戳的前缀。最后一行永远不会执行,它只是用来提醒读者,如果写了一个处
理程序来考虑一个更加优雅的退出方式,正如前面讨论的,那么应该调用 close()方法。
"""
while True:
print("waiting for connection")
tcpCliSock, addr = tcpSerSock.accept() # 接收客户端连接,返回客户端和地址
print("...connected from:", addr)
while True:
data = tcpCliSock.recv(BUFSIZ).decode() #对话(接收 / 发送) 接收客户端的data
if not data:
break
tcpCliSock.send(('service:'+ctime()+'--'+data).encode()) #发送时间戳 和data信息给客户端
tcpCliSock.close()
tcpSerSock.close()
2、tcp客户端创建
from socket import *
HOST = 'localhost'
PORT = 21567 #端口号 PORT 应该与你为服务器设置的完全相同(否则,将无法进行通信)
BUFSIZ = 1024
ADDR = (HOST, PORT)
tcpCliSock = socket(AF_INET, SOCK_STREAM) #分配 TCP 客户端套接字
tcpCliSock.connect(ADDR) #主动连接
"""
我们必须解码来自服务器端的字符串(借助于distutils.log.warn()
"""
while True:
data = input("> ")
if not data: #用户如果没有输入,则终止
break
tcpCliSock.send(data.encode()) #发送客户端的data给服务器
data = tcpCliSock.recv(BUFSIZ).decode() #接收服务器的data
if not data: #或者服务器终止且对 recv()方法的调用失败
break
print('返回:%s'%data)
tcpCliSock.close()
二、UDP
1、UDP服务器创建
"""
这个脚本创建一个 UDP 服务器,它接受客户端发来的消息,并将加了时间戳前缀的该消息返回给客户端。
"""
from socket import *
from time import ctime
HOST = ""
PORT = 21567
BUFSIZ = 1024
ADDR = (HOST, PORT)
udpServer = socket(AF_INET, SOCK_DGRAM)
udpServer.bind(ADDR)
while True:
print("waiting for masssage")
data,addr = udpServer.recvfrom(BUFSIZ) #接收
data = data.decode()
udpServer.sendto((ctime()+"--"+ data).encode(),addr)
print("received from and returned to ",addr)
udpServer.close()
2、UDP客户端创建
#这个脚本创建一个 UDP 客户端,它提示用户输入发送给服务器的消息,并接收服务器加了时间戳前缀的消息,然后将它们显示给用户。
from socket import *
HOST = 'localhost'
PORT = 21567 #端口号 PORT 应该与你为服务器设置的完全相同(否则,将无法进行通信)
BUFSIZ = 1024
ADDR = (HOST, PORT)
udpCS = socket(AF_INET, SOCK_DGRAM)
while True:
data = input("> ")
if not data:
break
udpCS.sendto(data.encode(),ADDR)
data,ADDR = udpCS.recvfrom(BUFSIZ)
if not data:
break
print(data)
udpCS.close()
其实道理都差不多,在python3中,利用套接字传输的内容都以byte形式传输,这时候传送时(send/sendto)需要encode,接收(recv)时需要decode。只要掌握这个重点,处理这个问题就很简单了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# python
# socket
# 编码
# socket套接字
# python使用原始套接字发送二层包(链路层帧)的方法
# Python中利用原始套接字进行网络编程的示例
# python原始套接字编程示例分享
# Python 套接字 Accept 超时问题解析
# 客户端
# 端口号
# 与你
# 求出
# 创建一个
# 完全相同
# 是在
# 会在
# 这个问题
# 将其
# 很简单
# 并将
# 如果没有
# 写了
# 现时
# 可以根据
# 我们必须
# 设置为
# 永远不会
# 都以
相关文章:
在线制作视频的网站有哪些,电脑如何制作视频短片?
网站制作网站,深圳做网站哪家比较好?
广州美橙建站如何快速搭建多端合一网站?
如何注册花生壳免费域名并搭建个人网站?
香港服务器租用费用高吗?如何避免常见误区?
网页设计网站制作软件,microsoft office哪个可以创建网页?
深入理解Android中的xmlns:tools属性
装修招标网站设计制作流程,装修招标流程?
如何在云主机快速搭建网站站点?
北京营销型网站制作公司,可以用python做一个营销推广网站吗?
建站主机解析:虚拟主机配置与服务器选择指南
网站制作培训多少钱一个月,网站优化seo培训课程有哪些?
制作网站的基本流程,设计网站的软件是什么?
常州自助建站:操作简便模板丰富,企业个人快速搭建网站
如何高效生成建站之星成品网站源码?
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
制作网站外包平台,自动化接单网站有哪些?
如何在Golang中实现微服务服务拆分_Golang微服务拆分与接口管理方法
太原网站制作公司有哪些,网约车营运证查询官网?
北京制作网站的公司,北京铁路集团官方网站?
如何快速搭建高效WAP手机网站吸引移动用户?
javascript中对象的定义、使用以及对象和原型链操作小结
如何快速生成凡客建站的专业级图册?
企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?
如何续费美橙建站之星域名及服务?
合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?
实现虚拟支付需哪些建站技术支撑?
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
娃派WAP自助建站:免费模板+移动优化,快速打造专业网站
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
建站之星如何修改网站生成路径?
建站之星如何保障用户数据免受黑客入侵?
如何通过宝塔面板实现本地网站访问?
建站org新手必看:2024最新搭建流程与模板选择技巧
建站之星图片链接生成指南:自助建站与智能设计教程
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
完全自定义免费建站平台:主题模板在线生成一站式服务
如何快速选择适合个人网站的云服务器配置?
文字头像制作网站推荐软件,醒图能自动配文字吗?
如何用西部建站助手快速创建专业网站?
免费ppt制作网站,有没有值得推荐的免费PPT网站?
如何快速生成高效建站系统源代码?
深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?
早安海报制作网站推荐大全,企业早安海报怎么每天更换?
创业网站制作流程,创业网站可靠吗?
江苏网站制作公司有哪些,江苏书法考级官方网站?
网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?
图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?
平台云上自主建站:模板化设计与智能工具打造高效网站
*请认真填写需求信息,我们会在24小时内与您取得联系。