Python连载53-UDP、TCP、FTP编程实例
一、服务器程序要求永远运行,一般用死循环来处理
1.服务器改造版本V03(主程序
原封不动,这里只修改了运行的程序)
if __name__ == "__main__":
while True:
try:
print("Start Server")
serverFunc()
print("End Server")
except Exception as e:
print(e)
time.sleep(1)
二、TCP编程
1.面向链接的传输,即每次传输之前需要先建立一个实例
2.客户端和服务端两个程序需要编写
3.Server端的编写流程
(1)建立socket负责具体通信,这个socket其实只负责接受对方的请求
(2)绑定端口和地址
(3)监听接入的访问socket
(4)接受访问的socket,可以理解接受访问即建立了一个通讯的链接通路
(5)接受对方的发送内容,利用接收到的socket接受内容
(6)如果有必要,给对方发送反馈信息
(7)关闭链接通路
4.Client端流程
(1)建立通信socket
(2)链接对方,请求跟对方建立通路
(3)发送内容到对方服务器
(4)接受对方的反馈
(5)关闭链接通路
5.举例
import socket
def tcp_srv():
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)#其哪一个参数为ipv4,后一个参数为TCP固定参数
addr = ("127.0.0.1",8998)#ip地址和端口号
sock.bind(addr)#绑定addr
sock.listen()#监听接入的访问socket
while True:
#接受访问的socket,可以理解为接受访问即建立一个通讯的链接通路,accept返回的元组第一个元素赋给skt,第二个元素赋给addr
skt,addr = sock.accept()#第一个元素是socket,第一个元素就是发送方的地址
#接受对方的发送内容,利用接受到的socket接受内容
msg = skt.recv(500)#500代表接收使用的buffersize,理解为接受内容的大小
msg = msg.decode()#接受到的是bytes格式内容,想得到str格式的,需要进行解码
#下面三行代表反馈的信息
rst = "Received msg:{0} from {1}".format(msg,addr)
print(rst)
skt.send(rst.encode())
#关闭socket
skt.close()
if __name__ == "__main__":
print("Startint tcp server.......")
tcp_srv()
print("Ending tcp server.........")
import socket
def tcp_clt():
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
addr = ("127.0.0.1",8998)
sock.connect(addr)#链接addr这个地址,建立tcp这个通道
msg = "I am a good man"
sock.send(msg.encode())
rst = sock.recv(500)#接受对方的反馈
print(rst.decode())
sock.close()
if __name__ == "__main__":
tcp_clt()

解释:先运行了服务器端的程序一次,然后运行了客户端程序四次,可以看到服务器端(端口8998)接收到了四次客户端发来的消息,并且每一次发来消息的端口都不一样,按照升序53256-53259.
三、FTP编程
FTP(FileTransferProtocal)文件传输协议
用途:定制一些特殊的上传下载文件的服务
用户分类:登录FTP服务器必须有一个账号
(1)Real账户:注册账户
(2)Guest账户:可能临时对某一类人的行为进行授权
(3)Anoymous账户:匿名账户,允许任何人
四、源码
D33_3_LoopOfServer.py
D33_4_TCPSever.py
D33_5_TCPClient.py
https://github.com/ruigege66/Python_learning/blob/master/D33_3_LoopOfServer.py
https://github.com/ruigege66/Python_learning/blob/master/D33_4_TCPSever.py
https://github.com/ruigege66/Python_learning/blob/master/D33_5_TCPClient.py
2.CSDN:https://blog.csdn.net/weixin_44630050(心悦君兮君不知-睿)
3.博客园:https://www.cnblogs.com/ruigege0000/
4.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料

Python连载53-UDP、TCP、FTP编程实例的更多相关文章
- Python Socket Programming UDP/TCP
基于UDP/TCP的套接字编程demo UDP 客户端/服务器 一个简单的基于UDP协议的客户端和服务器应用的进程通信. 逻辑: 客户端会给服务器发送小写的英文字母,服务器接受后,把它转化成大写再返回 ...
- Python—网络通信编程之tcp通信编程
服务端代码 import socket # 1.创建流式套接字实例 # server = socket.socket() server = socket.socket(socket.AF_INET, ...
- python的socket的tcp协议编程
服务端代码如下: # _*_ coding:utf-8 _*_import socketimport datetimeHOST='0.0.0.0'PORT=3434 s=socket.socket(s ...
- Python复习笔记(六)网络编程(udp/tcp)
一.网络-udp(用户数据报协议) 用户数据报协议 类似写信,不安全,数据有可能丢 1.1 ip地址 注意: IP地址127.0.0.1 ~ 127.255.255.255 用于回路测试 私有ip地址 ...
- python udp编程实例
与python tcp编程控制见 http://blog.csdn.net/aspnet_lyc/article/details/39854569 c++ udp/tcp 编程见 http://blo ...
- Python Socket,How to Create Socket Cilent? - 网络编程实例
文章出自:Python socket – network programming tutorial by Silver Moon 原创译文,如有版权问题请联系删除. Network programin ...
- 三十天学不会TCP,UDP/IP网络编程-UDP,从简单的开始
如果对和程序员有关的计算机网络知识,和对计算机网络方面的编程有兴趣,欢迎去gitbook(https://www.gitbook.com/@rogerzhu/)star我的这一系列文章,虽然说现在这种 ...
- centos Linux系统日常管理2 tcpdump,tshark,selinux,strings命令, iptables ,crontab,TCP,UDP,ICMP,FTP网络知识 第十五节课
centos Linux系统日常管理2 tcpdump,tshark,selinux,strings命令, iptables ,crontab,TCP,UDP,ICMP,FTP网络知识 第十五节课 ...
- SOCKET, TCP/UDP, HTTP, FTP 浅析
SOCKET, TCP/UDP, HTTP, FTP (一)TCP/UDP,SOCKET,HTTP,FTP简析 TCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层: 网络层:IP协议. ...
随机推荐
- Oracle number类型前端界面和数据库查询不一致 number精度问题
[发现问题] [问题分析] Ⅰ.在前端界面查询,发现了库存中存在这样的数量值.但是在数据库中查询时显示正常.即6.999999999999997 为 7. Ⅱ.至于这种小数产生,我以为是oracle存 ...
- Abp zero 登录 添加腾讯云验证码
腾讯云验证码是为网页.App.小程序开发者提供的安全验证服务,基于腾讯多年的大数据积累和人工智能决策引擎,构建智能分级验证模型,最大程度保护业务安全的同时,提供更精细化的用户体验. 腾讯云--> ...
- 使用vsphere client 克隆虚拟机的具体操作步骤
采用 VMWare ESXi6.0,使用ESXi经常会遇到这样的问题,需要建立多个虚拟机,都是一样的操作系统,但是如果一台台装效率太低. VMware ESXi.VMware vCenter Serv ...
- [洛谷P1122][题解]最大子树和
这是一道还算简单的树型dp. 转移方程:f[i]=max(f[j],0) 其中i为任意非叶节点,j为i的一棵子树,而每棵子树都有选或不选两种选择 具体看代码: #include<bits/std ...
- verilog常见错误列表
Error/Warning 来源:https://hdlbits.01xz.net/wiki/ 题目: 1.Quartus Warning 10235: Warning (): Verilog HDL ...
- 基于 CAS 无锁实现的 Disruptor.NET 居然慢于 BlockingCollection,是真的吗?
StackOverflow 有人说自己的Disruptor.NET 代码比 BlockingCollection 还有慢 2 倍,并且把完整代码贴出,楼下几个老外也的回复说了一堆,但是没研究出个所以然 ...
- CountDownLatch原理分析
CountDownLatch原理分析 CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程执行完后再执行.例如,应用程序的主线程希望在负责启动框架服务的线程已经启动 ...
- JS如何判断鼠标滚轮向上还是向下滚动
前几天偶然看到某前端群有人在问:JS如何判断鼠标滚轮向上还是向下滚动? 我想了想,有点蒙蔽,心想难道不是用scrollTop来判断吗? 但我不确定,也出于好奇心,于是开始了一番探索 思路:通过even ...
- 你可能会忽略的 Git 提交规范
一.为什么需要规范? 无规矩不成方圆,编程也一样. 如果你有一个项目,从始至终都是自己写,那么你想怎么写都可以,没有人可以干预你.可是如果在团队协作中,大家都张扬个性,那么代码将会是一团糟,好好的项目 ...
- python是什么?python能做什么?
人生苦短,我用python. python是什么? Python是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. python语言有以下特点: 易于学习.Python有相对较少的关键字 ...