day18总结

编程

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()

你可能感兴趣的:(day18总结)