socket又叫套接字,我们把进行网络通信的一端就叫一个套接字
socket编程,就是通过程序实现通信的两端(服务器和客户端)
python中支持socket有三种,分别是基于TCP、UDP和IP的,叫做TCP套接字、UDP套接字和原始套接字
基于TCP的服务器端
-
创建套接字对象,并且指定服务类型
family:
AF_INET --> ipv4
AF_INET6 --> ipv6
type:
SOCK_STREAM --> TCPimport socket server = socket.socket(family=socket.AF_INET, type=socket.SOCK_STREAM)
2.绑定ip地址和端口
地址:(ip地址, 端口)
ip地址:服务器所在的硬件的ip地址
端口:不同端口绑定不同的服务,同一时间同一个端口只能绑定一个服务
端口的范围0-65535,但是小于等于1024的端口叫'著名端口',
用于绑定著名服务(比如http服务、邮件服务等),最好不要用
server.bind(('10.7.154.82', 12346))
-
监听访问
server.listen() print('开始监听....')
让服务器一直运行,等待访问
while True:
# 当有客户端访问当前服务器后就建立连接
connect, addr = server.accept() # 当有一个客户端来连接当前服务器的时候才会执行
print('=====')
while True:
# 通过会话给客户端发送消息
# 发送的内容必须是二进制数
"""
字符串转二进制: 字符串.encode('utf-8')
二进制转字符串: 二进制数据.decode('utf-8')
"""
message = input(':')
connect.send(message.encode('utf-8'))
# 接收客服端发送给服务器的消息
data = connect.recv(1024)
print(data.decode('utf-8'))
# 关闭连接
# connect.close()
socket_客户端
import socket
1. 创建套接字对象
client = socket.socket(family=socket.AF_INET, type=socket.SOCK_STREAM)
2. 连接服务器
client.connect(('10.7.154.82', 12345))
while True:
# 3.接收服务器返回的数据
# 1024是接收的数据的大小
data = client.recv(1024)
print(data.decode('utf-8'))
# 4.给服务器发送数据
message = input(':')
client.send(message.encode('utf-8'))
网友评论