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协议. ...
随机推荐
- JMS消息中间件
1.什么是消息中间件 消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成.通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信.对于消息中 ...
- Redis集群模式下的redis-py-cluster方式读写测试
与MySQL主从复制,从节点可以分担部分读压力不一样,甚至可以增加slave或者slave的slave来分担读压力,Redis集群中的从节点,默认是不分担读请求的,从节点只作为主节点的备份,仅负责故障 ...
- redis cluster集群动态伸缩--删除主从节点
目标:从集群中剔除一组主从(5007,5008) 经过上一节增加5007,5008主从服务节点后,目前集群的情况是这样的: b3363a81c3c59d57143cd3323481259c044e66 ...
- WCF、WebAPI、WCFREST、WebService的区别
目录导航: 1. WCF 2. WebAPI 3. WebService 4. WCFREST 5. 如何选择WCF.WebAPI.WCFREST.WebService 1.WCF 这个是基于SOAP ...
- n个数字相加
求s=a+aa+aaa+aaaa+aa...a的值 其中a是一个数字,多少个数字相加由键盘输入控制 a = int(input("数字:")) count = int(input( ...
- java 后端与前端Date类型与String类型互相转换(使用注解)
后端返回的类型中,直接定义Date类型,加上此注解,直接将Date类型转成自定义的格式给前端 class TestDateOutput{ @JsonFormat(pattern = "yyy ...
- C#冒泡算法
冒泡算法:先看代码吧,我不喜欢先说一大堆,看不懂了再说 class Program { static void Main(string[] args) { , , , , , }; ; i <a ...
- xlwings 操作 excel
xlwings: xlwings是一个Python库,它使Python的一些数据分析特性可以在Excel实例中使用,包括对numpy数组.pandas Series和DataFrame的支持.与其他任 ...
- ubuntu 默认python版本切换
电脑上面有些脚本是python2的,有些是python3的,但是系统默认是python2,需要设置环境变量来进行切换. python2切换到python3: echo alias python=pyt ...
- 国产处理器的逆袭机会——RISC-V
前言 今天天气阴沉,刚才又下起了小雨,温度骤降,前几天脱下的秋裤,今天又穿上了,这天气真是变化无常.上周六(4.20)参加了一场关于RSIC-V的技术沙龙,第一次真正了解了RISC-V架构,正好今天不 ...