网络编程(关于TCP和UDP)
TCP是传输控制协议,它提供的是面向连接,可靠的字节流服务,当客户和服务器彼此交换数据前,会进行连接看是否能收到,之后才能传输数据,直到数据传输结束。
优点:具有超时重发.丢弃重复数据.效验数据.流量控制等功能,保证了数据能从一端传到另一端。
缺点:传输大型文件时会产生粘包
使用TCP的应用:web浏览器.电子邮件.文件传输程序
UDP是用户数据报协议,是一个简单的面向数据报的运输层协议。不提供可靠性,只是把应用程序数据报发送出去,不保证是否能接收到数据,传递数据时不进行三次握手,没有重发机制,故而传输数据很快
优点 :传输快,一对一.一对多.多对多.多对一.面向报文,尽最大努力服务,不会产生粘包问题
缺点:不可靠,没有连接的服务
使用UDP的应用:视频流,电台
简单的TCP案例:
服务器端:
import socket skt = socket.socket() skt.bind(('127.0.0.1',5000))#绑定ip地址和端口号 skt.listen() #监听链接 conn,addr = skt.accept()#接受客户端连接 ret = conn.recv(1024) #接受客户端1024个字节 print(ret) #打印客户端信息 conn.send(b"laowang") #向客户端发送信息 conn.close() #关闭客户端接字 skt.close() #关闭服务器接字
客户端:
import socket skt = socket.socket() #创建客户套接字 skt.connect(('127.0.0.1',5000))#尝试连接服务器 skt.send(b'1111') #对话 ret = skt.recv(1024)# 发送/接收 print(ret) skt.close() #关闭客户套接字
缺点是只能发一句话