一、服务器程序要求永远运行,一般用死循环来处理

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编程实例的更多相关文章

  1. Python Socket Programming UDP/TCP

    基于UDP/TCP的套接字编程demo UDP 客户端/服务器 一个简单的基于UDP协议的客户端和服务器应用的进程通信. 逻辑: 客户端会给服务器发送小写的英文字母,服务器接受后,把它转化成大写再返回 ...

  2. Python—网络通信编程之tcp通信编程

    服务端代码 import socket # 1.创建流式套接字实例 # server = socket.socket() server = socket.socket(socket.AF_INET, ...

  3. python的socket的tcp协议编程

    服务端代码如下: # _*_ coding:utf-8 _*_import socketimport datetimeHOST='0.0.0.0'PORT=3434 s=socket.socket(s ...

  4. Python复习笔记(六)网络编程(udp/tcp)

    一.网络-udp(用户数据报协议) 用户数据报协议 类似写信,不安全,数据有可能丢 1.1 ip地址 注意: IP地址127.0.0.1 ~ 127.255.255.255 用于回路测试 私有ip地址 ...

  5. python udp编程实例

    与python tcp编程控制见 http://blog.csdn.net/aspnet_lyc/article/details/39854569 c++ udp/tcp 编程见 http://blo ...

  6. Python Socket,How to Create Socket Cilent? - 网络编程实例

    文章出自:Python socket – network programming tutorial by Silver Moon 原创译文,如有版权问题请联系删除. Network programin ...

  7. 三十天学不会TCP,UDP/IP网络编程-UDP,从简单的开始

    如果对和程序员有关的计算机网络知识,和对计算机网络方面的编程有兴趣,欢迎去gitbook(https://www.gitbook.com/@rogerzhu/)star我的这一系列文章,虽然说现在这种 ...

  8. 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网络知识 第十五节课 ...

  9. SOCKET, TCP/UDP, HTTP, FTP 浅析

    SOCKET, TCP/UDP, HTTP, FTP (一)TCP/UDP,SOCKET,HTTP,FTP简析   TCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层: 网络层:IP协议. ...

随机推荐

  1. RCS MO_Client&server Net log 摘录

          传输过程总体来说: (1)客户端提供[客户端随机数.可选算法套件.sessionId]等信息 (2)服务端提供[服务端随机数.选用算法套件.sessionId]等信息 (3)服务端提供证书 ...

  2. EXCEPTION_ACCESS_VIOLATION(0xc0000005)

    EXCEPTION_ACCESS_VIOLATION(0xc0000005)eclipse.ini中添加:-XX:CompileCommand=exclude,org.eclipse.jdt.inte ...

  3. Django使用MySQL数据库的流程

    Django使用MySQL数据库的流程 手动创建一个MySQL数据库 配置数据库 ENGINE MySQL NAME 数据库的名字 HOST ip PORT 3306 USER 用户名 PASSWOR ...

  4. sql server使用sp_executesql返回拼接字符串里面的输出参数

    问题: 今天一同事请教博主,他拼接了一个语句,select表格形式数据,然后使用@@rowcount获取到行数. 但他又有这样特别的需求:想只获取行数而不返回表格数据结果,因为是while循环,不想返 ...

  5. python科学计算和数据分析常用库

    NumPy NumPy最强大的是n维数组,该库还包含基本的线性代数函数.傅立叶变换.随机函数和其他底层语言(如Fortran.C和C++)集成的工具. SciPy SciPy建立在NumPy基础上,它 ...

  6. uiautomatorviewer 报错 Error while obtaining UI hierarchy XML file: com.android.ddmlib.SyncException: Remote object doesn't exist!

    在进行自动化时经常需要使用到 uiautomatorviewer获取控件的各个属性,然后在脚本中通过各个控件的属性来操作. 如果使用的是uiautomator2的话,一般都是使用weditor这个来查 ...

  7. 如何在Mac上识别和删除损坏的字体

    字体看起来像无害的文件,而且大多数时候都是这样.但是,就像任何计算机文件一样,字体可能会损坏或损坏.发生这种情况时,它们可能会导致文档或应用程序出现问题.在Mac上使用“ 字体簿”来验证已安装的字体, ...

  8. CF1062F Upgrading Cities

    题意 由于这是个\(DAG\),我们考虑拓朴排序,求某个点能到的和能到它的点,这是两个问题,我们可以正反两边拓朴排序,这样就只用考虑它能到的点了 设\(f[x]\)表示\(x\)能到的点数\(+\)能 ...

  9. SQL Server 索引分析开关

    set statistics io onset statistics profile on

  10. CSS属性继承

    在CSS中有一些属性是可以继承的,跟继承家产一样,哎,一代一代的往下传,而有些属性就比较惨了,不能继承,只能自己来设置. 我简略的总结了一下一些可以继承和不可以继承的属性 可继承 1.字体系列属性:f ...