day26_socket即基于tcp的socket编程
1、socket模块
1.1 什么是socket
socket是应用层与协议层TCP/IP协议族通信的中间软件抽象层,它是一组接口
在设计模式中,socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在socket接口后面,对用户来说,一组简单的接口就是全部,让socket去组织数据,以符合指定的协议
1.2 socket模块介绍
python内置模块
import socket
2、基于tcp协议简单编程
tcp是基于连接的,必须先启动服务器,然后再 启动客户端去连接服务器
server端
import socket
server = socket.socket()
server.bind(('127.0.0.1',10086)) # 把地址绑定到套接字
server.listen() # 监听连接
conn,addr =server.accept() # 接受客户端的连接
ret = conn.recv(1024) # 接收客户端的信息
print(ret) # 打印客户端信息
conn.send(b'hi') # 发送消息给客户端
conn.close() # 关闭客户端套接字
seerver.close() # 关闭服务器套接字(可选)
client端
import socket
client = socket.socket() # 创建客户端套接字
client.connect(('127.0.0.1',10086)) # 尝试连接服务器
client.send(b'hello') # 发送消息给服务器
ret = client.recv(1024) # 接收服务器的消息
print(ret) # 打印服务器消息
client.close() # 关闭客户端套接字
重启服务端可能会报错:
# 加入一条socket匹配,重用ip和端口
import socket
from socket import SOL_SOCKET,SO_REUSEADDR
server = socket.socket()
socket.setsockopt(SOL_SOCKET,SOREUSEADDR,1) # 在bind前添加,重用服务器地址
server.bind(('127.0.0.1',10086))
sercer.listen()
conn,addr = server.accept()
ret = conn.recv(1024)
print(ret)
conn.send(b'hi')
conn.close()
server.close()