互联网编程之初步 TCP和UPD的比较
TCP 服务器端的工作流程
1 导入socket包
2 创建socket对象 server_socket
3 server_socket绑定ip和端口
4 设置server_socket监听数量
5 接收客户连接
6 对客户端接受和发送信息
# 导入包
import socket
# 创建对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定
server_socket.bind(('10.20.154.60', 6667))
# 监听数量
server_socket.listen(5)
# 接收连接
conn, addr = server_socket.accept()
# 发送和接收数据
while True:
# 接收数据,会暂停,会阻塞程序,1024是缓冲值
data = conn.recv(1024)
print('客户端说:', data.decode())
# 发送数据给客户端
conn.send('客户端,你好!'.encode())
UDP 服务器端的工作流程
1 导入socket包
2 创建socket对象 server_socket
3 server_socket绑定ip和端口
4 对客户端接受和发送信息
# UDP 服务端
import socket
# 1 创建UDP协议的socket对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 2 绑定ip和port
server_socket.bind(('10.20.154.60', 6669))
print('服务端已启动!')
# 3 接收和发送数据
while True:
# 接收数据:会阻塞程序
data, addr = server_socket.recvfrom(1024)
print('客户端发过来的数据:', data.decode(), addr)
# 发送数据
server_socket.sendto('收到'.encode(),addr)
对比两者在流程上,UDP减少了监听数量和接收客户端的连接。
在代码上,TCP 是SOCK_STREAM,而UDP是SOCK_DGRAM。向客户端发送消息时,UDP需要填写addr而TCP不需要
浙公网安备 33010602011771号