网络基本协议
TCP协议
UDP协议
二者对比:
连接性:
TCP是面向连接的协议,需要在传输数据之前先进行三次握手建立连接。而UDP是无连接的协议,可以直接发送数据,无需事先建立连接。
可靠性:
TCP提供了数据传输的确认和重传机制,能保证数据按照发送的顺序进行接收,并且对丢包有一定的检测和恢复能力。而UDP则没有这样的保证,可能会导致数据的丢失、重复或乱序。
速度:
由于TCP的可靠性和确认机制,其处理速度相对较慢。而UDP由于其简单性,处理速度较快,适用于实时应用如音频和视频流。
P的首部开销比UDP的首部开销大。TCP头部固定20字节,而UDP头部固定8字节。
python实现网络编程的基本模块-socket模块
使用python实现tcp协议
TCP协议
服务器端
import socketsk = socket.socket()
sk.bind(("127.0.0.1",9001))
sk.listen()
while True:print("正在等待连接")coon,addr = sk.accept()msg = coon.recv(1024).decode("utf-8")print(msg)coon.send("我是服务器".encode("utf-8"))coon.close()
客户端
import socket
import time
sk = socket.socket()
sk.connect(("127.0.0.1",9001))
sk.send("我是客户端".encode("utf-8"))
msg = sk.recv(1024).decode("utf-8")
print(msg)
time.sleep(1)
print("通信结束")
sk.close()
UDP协议
服务器端
import socketsk = socket.socket(type=socket.SOCK_DGRAM)sk.bind(("127.0.0.1",9001))
msg,addr = sk.recvfrom(1024)
print(msg.decode("utf-8"))
sk.sendto("我是服务器".encode("utf-8"),addr)
客户端
import socket
import time
sk = socket.socket(type=socket.SOCK_DGRAM)
sk.sendto("我是客户端".encode("utf-8"),("127.0.0.1",9001))
msg = sk.recv(1024).decode("utf-8")
print(msg)
sk.close()
#:可以在此基础上进行修改,以实现各种功能
import socket
import time
import random
while True:sk = socket.socket(type=socket.SOCK_DGRAM)s = random.randint(1,10)sk.sendto("我是客户端{}".format(s).encode("utf-8"),("127.0.0.1",9001))msg = sk.recv(1024).decode("utf-8")time.sleep(2)print(msg)
对客户端进行循环操作,使其没两秒发送一次消息