程序员的公众号:源1024,获取更多资料,无加密无套路!
最近整理了一份大厂面试资料《史上最全大厂面试题》,Springboot、微服务、算法、数据结构、Zookeeper、Mybatis、Dubbo、linux、Kafka、Elasticsearch、数据库等等
获取方式: 关注公众号并回复 666 领取,更多内容持续奉上
Python 提供了两个级别访问的网络服务:
低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的全部方法。
高级别的网络服务模块 SocketServer, 它提供了服务器中心类,可以简化网络服务器的开发。
socket()函数
socket.socket([family[, type[, proto]]])
- family: 套接字家族可以是 AF_UNIX 或者 AF_INET
- type: 套接字类型可以根据是面向连接的还是非连接分为
SOCK_STREAM
或SOCK_DGRAM
- proto: 一般不填默认为0.
bind() | 绑定地址(host,port)到套接字, 在AF_INET下,以元组(host,port)的形式表示地址。 |
listen() | 开始TCP监听。backlog指定在拒绝连接之前,操作系统可以挂起的最大连接数量。该值至少为1 |
accept() | 被动接受TCP客户端连接,(阻塞式)等待连接的到来 |
connect() | 主动初始化TCP服务器连接,一般address的格式为元组(hostname,port) |
recv() | 接收TCP数据,数据以字符串形式返回,bufsize指定要接收的最大数据量 |
send() | 发送TCP数据,将string中的数据发送到连接的套接字 |
sendall() | 完整发送TCP数据。将string中的数据发送到连接的套接字,但在返回之前会尝试发送所有数据 |
close() | 关闭套接字 |
服务端:
import socket
#创建套接字
server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#绑定地址
server_socket.bind(('localhost',8888))
server_socket.listen(3)
while True:
socket,addr = server_socket.accept()
print('连接地址: %s' % str(addr))
#发送数据
msg='你好,这里是Python socket通信'+ "\r\n"
socket.sendall(msg.encode('utf-8'))
#关闭连接
socket.close()
客户端:
import socket
# 创建 socket 对象
socket_client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接服务器
socket_client.connect(('localhost', 8888))
# 接收服务端的数据
msg = socket_client.recv(1024)
#关闭连接
socket_client.close()
print (msg.decode('utf-8'))
#输出
你好,这里是Python socket通信
系列文章索引
Python (一) 操作Mysql
Python (二) 读写excel文件
Python (三) 读写csv文件
Python (四)读写word
Python (五) 处理图像
Python (六) 绘图
Python(七)操作JSON