什么是socket
socket:又叫套接字,指的是网络通信的两端,分别是服务器和客户端
socket编程指的就是通过代码实现客户端和服务器之间的通信
服务器的实现
1.创建套接字对象:
server = socket.socket()
其中:
family : ip类型, AF_INET -> ipv4, AF_INET6 -> ipv6
type: 传输协议的类型,SOCK_STREAM -> TCP () , SOCK_DGRAM -> UDP ()
2.绑定IP地址和端口:
server.bind(('10.7.190.94',8080))
ip用来区分互联网上设备.
端口是用来区分一台计算机上的不同的服务(应用),值是0-65535,其中0-1024是著名端口(有特殊功能),其他的可以随便选用.
bind((ip地址,端口号)): ip地址和端口号是元组形式
Windows上看ip地址:终端里面输入ipconfig
3.启动服务器:(监听请求)
server.listen(255)
listen(数量) - 这里的数量指的是一次性能处理的最大请求数.
4.让服务器一直处于运行状态(一般不会让服务器关闭)
while True:
print('开始监听...')
# 5.等待客户端的请求
# 程序运行到这个地方会停下来,等到有客户端来连接服务器,才会接着往后执行
connect,addr = server.accept() # 获取到请求的客户端的信息
print(connect,addr)
# 6.发送消息
# send(数据) - 发送数据,数据是二进制数据
message = input('>>>')
connect.send(message.encode(encoding = 'utf-8'))
# 7.接受消息
# recv(字节数) -接受消息,并且指点一次性能接受的数据的大小最大值;返回接受到的二进制数据.
data = connect.recv(1024)
print('<<<:')
print(data.decode(encoding='utf-8'))
# 关闭连接
connect.close()
客户端的实现
1.创建套接字对象
client = socket.socket()
2.连接服务器:
client.connect(('10.7.190.94',8080))
connect((ip地址,端口)) - ip地址是字符串格式,connect参数是元组
3.接受消息
data = client.recv(1024)
print('<<<:')
print(data.decode(encoding='utf-8'))
5.关闭连接:
client.close()