编程
1.DNS服务器:解析域名和ip地址
2.计算机连网的时候就会有ip地址(动态的)
3.mac地址是唯一的,每一个设备的mac地址不一样,
4.OSI参考模型————7层
应用层,表示层,会话层,传输层(做后端主要接触到这4个)
网络层,数据链路层,物理层
1.什么是socket编程?
socket -- 又叫套接字,指的是实现通信的两个端,这两个端又分为服务器端套接字和客户端套接字。
一个服务器可对应多个客户端,服务器不主动发起回话,只参与。
2.服务器套接字
Python中提供了一个socket模块来支持socket编程
1)创建套接字对象(买电话机)
a. socket(family = AF_INET, type = SOCK_STREAM)
b. family -- 设置ip类型;AF_INET - ipv4, AF_INET - ipv6
c. type -- 设置数据的传输方式;SOCK_STREAM - TCP, SOCK_DGRAM - UDP
server = socket.socket()
2)绑定ip和端口(查电话线)
server.bind((ip地址,端口号)) -- 绑定
ip地址 - 字符串;服务器运行在哪台计算机上ip地址就写哪台计算机的ip地址
端口号 - 整型;范围是0-65535,其中0-1024是著名端口,有自己特殊的意义一般不随便用
3)等待客户端连接,并且设置同一时间能够接收的请求数量
server.listen(512)
4)让服务器保持一直运行的状态
while True:
#####5)接收请求(接电话)
connect, address = server.accept -- (当程序执行到accept的时候会停下来,直到有客户端给当前服务器发送请求为止)
######6)接收客户端发送的数据(听别人将电话)
recv(数据大小) --接收数据并且设置一次性能够接收最大的数据
注意:二进制转字符串
二进制对象.decode(encoding='utf-8')
str(二进制对象, encoding='utf-8')
recv_data=connect.recv(1024) - 按1kb切成多段发送,此次产生的数据是二进制
######7)给客户端发送数据(说话给别人听)
send(数据) -- 发送数据,数据类型必须是bytes
connect.send('HTTP/1.1 200 OK\r\n\r\n hello socket'.encode())#服务器发给客户端的
######8)关闭连接(挂电话)
connect.close()
3.客户端套接字
1)创建套接字对象(买电话机)
client = socket.socket()
2) 发送请求(打电话)
client.connect((host, port))--连接哪个服务器就写哪个host和port
3)发送消息
client.send('你好服务器'.encode())
4)接收消息
re_data = client.recv(1024)
print(re_data.decode(encoding='utf-8'))
client.close()