笔记
网络编程 和 并发编程 昨日内容回顾: os sys time collections json,logging ,random ,re 今日内容: 一 C\S架构,客户端服务端架构 客户端(client) : 享受服务端提供的服务 服务端(server) : 给客户端提供服务 B\S 浏览器和服务端 B(browser) 二 网络通信的整个流程(硬件\名词) 集线器:将咱们所有的插上集线器的电脑连通起来 交换机: 升级版集线器 网卡: 接收电信号,网络插口:插网线 mac地址(物理地址): 8C-EC-4B-87-99-D7 16进制的6个数表示,前三位厂商编号,后三位生产流水号 全球唯一的,相当于身份证 广播\单播 广播风暴:首先不安全,拥堵信息 IP地址: 192.168.15.113 四个点分十进制组成 192.168.15.0 -- 192.168.15.255 256 划分广播域 IPv4 : IPv6 : 6个冒号分十六进制 IPv6 地址: fe80::48c3:8f81:8474:c7d0%2 DHCP协议:自动分配IP地址 子网掩码: 255.255.255.0, 例外一个班的同学的IP地址为:192.168.14.12 192.168.14.12 255.255.255.0 11000000.10101000.00001110.00001100 11111111.11111111.11111111.00000000 11000000.10101000.00001110.00000000 192.168.14.0 计算是否属于同一网段 属于同一个网段的,我们成为属于同一子网 #powerdesigner 制图软件,processon DNS服务器:域名:www.jd.com -->ip地址 路由器:管理网络,联通外网,并且路由转发,就是转发消息 路由协议:计算最优路径 网关:把关用的,公网IP,也可以说是路由器的IP地址 NAT:网络地址转换,将你局域网的IP地址转换为公网的IP地址,也就是网关的IP地址 局域网\内网 端口:电脑给你创建的标识电脑上的程序用的. 0-65535 ,0-1024 属于电脑内部的一些服务用的,千万别用,8000一般自己写程序的时候都不用. 三 初识socket(重点) 看群里面发的图
01服务端.py
import socket
#创建了一个socket对象
server = socket.socket() #创建一个手机
ip_port = ('192.168.15.113',8001) #创建了一张电话卡
#绑定IP地址和端口
server.bind(ip_port) #插上电话卡
#监听IP地址和端口
server.listen() #开机
print(11111)
#等待客户端的链接
conn, addr = server.accept() #等着别人给我打电话,阻塞住
#接收消息
from_client_msg = conn.recv(1024) #1024为消息大小,单位B,MB = 1024KB,1KB = 1024B
#接收的消息是bytes类型,需要转换为字符串
from_client_msg = from_client_msg.decode('utf-8')
print(from_client_msg)
conn.send('死鬼,十点'.encode('utf-8'))
#关闭链接
conn.close()
server.close()
# print(conn)
# print('>>>>',addr)
01客户端.py
import socket
client = socket.socket()
server_ip_port = ('192.168.15.113',8001)
#链接服务端
client.connect(server_ip_port)
#发消息
client.send('约吗'.encode('utf-8')) #send里面的消息必须是字节类型的
from_server_msg = client.recv(1024) #阻塞住,等待接收消息
from_server_msg = from_server_msg.decode('utf-8')
print(from_server_msg)
client.close()
02服务端.py
import socket
#创建了一个socket对象
server = socket.socket() #创建一个手机
ip_port = ('192.168.15.113',8001) #创建了一张电话卡
#绑定IP地址和端口
server.bind(ip_port) #插上电话卡
#监听IP地址和端口
server.listen(3) #开机,后面等待链接的客户端个数为3个
print(11111)
#等待客户端的链接
conn, addr = server.accept() #等着别人给我打电话,阻塞住
while True:
#接收消息
from_client_msg = conn.recv(1024) #1024为消息大小,单位B,MB = 1024KB,1KB = 1024B
#接收的消息是bytes类型,需要转换为字符串
from_client_msg = from_client_msg.decode('utf-8')
print(from_client_msg)
msg = input('瑞鑫说:')
conn.send(msg.encode('utf-8'))
#关闭链接
conn.close()
server.close()
# print(conn)
# print('>>>>',addr)
02客户端.py
import socket
client = socket.socket()
server_ip_port = ('192.168.15.113',8001)
#链接服务端
client.connect(server_ip_port)
while True:
msg = input('明杰想说:')
print('22222')
#发消息
client.send(msg.encode('utf-8')) #send里面的消息必须是字节类型的
from_server_msg = client.recv(1024) #阻塞住,等待接收消息
from_server_msg = from_server_msg.decode('utf-8')
print(from_server_msg)
client.close()
练习
留两个小练习: 1. server端:接收时间戳时间,转换成格式化时间(%Y-%m-%d)的字符串形式的就行 client端:每隔10秒中把时间戳发给server端,time.time() 2. 一直对话的程序 server收一个发一个 client发一个收一个