# socket : 介于应用层与传输层之间,为应用层封装对应的接口
# socket分类:
# 基于文件类型: AF_UNIX
# 基于网络类型: AF_INET ←
import socket
# 客户端
phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 1.获取socket对象 SOCK_STREAM流式协议,代表tcp协议
phone.connect(('127.0.0.1', 8080)) # 2.连接服务端端口
data = phone.recv(1024) # 3.接收
phone.send('hello'.encode('utf-8')) # 发送数据
phone.close() # 4.关闭
# 服务端
phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 1.获取socket对象
phone.bind(('127.0.0.1', 8080)) # 2.绑定服务端口
phone.listen(5) # 3.等待连接
connect, client_addr = phone.accept() # 4.建立连接并获得连接对象:conn
data = connect.recv(1024) # 5.接收数据
connect.send(data.upper()) # 发送数据
connect.close() # 6. 关闭连接
phone.close() # 7.关机