网络编程bs和cs框架
如果有些公司开发出来的软件没人要安装app,就不需要开发出来app了,只开发出来一个网站,用浏览器浏览就行了。
软件:
- 客户端:CS架构,Client --> Server(单机的没有server,不需要网络)
- 浏览器:BS架构,Browser --> Server
如何实现相互通信:
- 相互通信本质发送01010101
- 交换机作用
- 通过ipconfig查看自己的内网IP
- 公网IP,付费
python中socket模块帮助完成网络通信,下面编写一小段代码介绍一下,python中是如何网络通信的。
用此可以验证用户名和密码是否正确
- 先执行server.py,等待有人连接服务端
- 再执行范冰冰.py,范冰冰连接到服务端,发送给服务端内容为'你好,我是范冰冰'
- 服务端接收范冰冰的消息后打印内容
- 服务端发给范冰冰内容为stop
- 范冰冰断开和服务端的连接
- 服务端关闭服务
socket注意事项:退出的时候,服务器和客户端都要退出,否则可能出现错误。
#文件名:server.py import socket # 创建socket对象 server = socket.socket() # 绑定IP和端口,只有服务端才绑定IP和端口 server.bind(('192.168.0.105',8000)) # 后面最多有5个请求 排队等候 listen需要的参数(backlog:积压的工作) server.listen(5) #这个客户端连接之后,后面还可以有5个客户端排队,再有一个客户端连接的时候,就无法排队了;所以在第7位的时候才报错。 # 等待客户端来连接,从这里一启动,程序不会结束,accept会阻塞住,一直等待客户端来连接,一连接就立刻往下执行; # 如果没人来连接就傻傻地等待。 # server.accept()是个元组,这个元组永远有两个元素, # 一个是连接对象(比如两个地址之间要有一条路,通过这条路来传输东西),通过这个对象传输信息, # 另一个是客户端的地址信息 conn,addr = server.accept() #**************************在此阻塞了,只要有人来连接,程序就往下走,开始通信。 # conn.recv()通过那条路去获取信息,参数bufsize设置为1024的话,一次最多获取1024字节 # 1024表示:服务端通过马路获取数据时,一次性最多拿取1024字节 # 如果客户端一直不通过client.send()发送消息,server一直在此等候消息 data = conn.recv(1024) # 待会范冰冰会过来连接发数据-->'你好' print(data.decode('utf-8')) # 网络传输时都是通过bytes(字节)传输的, # 服务端通过连接对象(马路)给客户端回复了一个消息 conn.send(b'stop') # 范冰冰给服务器发送一个'你好',服务器回复一个‘stop’ # conn.close() 把马路用炸弹炸开,断开连接 conn.close() # 服务断开,不给任何人提供服务了 server.close()
# 文件名:范冰冰.py import socket client=socket.socket() # 有一个人来连接我的服务器,相当于有个人向服务器修了一条马路 # 这里也存在阻塞,如果服务端没有开启,范冰冰就连接不上,一直在这等待,直到连接成功才会继续往下走。 client.connect(('192.168.0.105',8000)) client.send('你好,我是范冰冰'.encode('utf-8')) # 范冰冰等待服务端的回复消息 data=client.recv(1024) print(data.decode('utf-8')) # 范冰冰收到消息后,拿了一个炸药包把自己通向服务端的路炸掉了,关闭自己 client.close()
python网络编程之socket模块2(开发一个聊天工具)
# 服务端.py import socket s