TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的,可靠的基于字节流传输层协议
UDP(User Datagram Protocol 用户数据报文协议),一种无连接的传输层协议,提供面向事务的简单的不可靠信息传送服务。
tcp协议和udp协议的差别 TCP UDP 是否连接 面向连接 面向非连接 传输可靠性 可靠 不可靠 应用场合 传输大量数据 少量数据 速度 慢 快
tcp通信模型如下:
代码如下:
tcp_server.py
import socket
host = socket.gethostname() #获取主机地址
port = 12345 #设置端口号
# 创建TCP/IP套接字,AF_INET表示使用TCP/IP协议族,SOCK_STREAM表示以流套接字类型传输(TCP),UDP为SOCK_DGRAM(数据包套接字类型)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host, port)) # 绑定地址(host,port)到套接字
s.listen(1) # 设置最多连接数量
sock,addr = s.accept() # 被动接收TCP客户端连接
print('连接已建立')
info = sock.recv(1024).decode() # 接收客户端数据
while info != 'quit':
if info:
print('接收到的内容:%s' % info)
send_data = input('输入发送内容:')
sock.send(send_data.encode()) # 发送TCP数据
if info == 'quit':
break
info = sock.recv(1024).decode() # 接收客户端数据
sock.close() # 关闭客户端套接字
s.close() # 关闭服务端套接字
tcp_client.py
import socket
s = socket.socket() # 创建TCP/IP套接字
host = socket.gethostname() # 获取主机地址
port = 12345
s.connect((host, port)) # 主动初始化TCP服务器连接
print('已连接')
info = ''
while info != 'quit':
send_data = input('输入发送的内容:')
s.send(send_data.encode()) # 发送TCP数据
if send_data == 'quit':
break
info = s.recv(1024).decode() #接收服务端数据
print('接收到的内容:%s' % info)
s.close() # 关闭套接字
运行结果如下:
运行服务端 运行客户端
python tcp_server.py python tcp_client.py
reference
https://blog.csdn.net/Linux_bin/article/details/77647575
https://www.cnblogs.com/xiaomayizoe/p/5258754.html
《Python从入门到项目实践》明日科技