一、软件开发结构
两个程序之间的通讯大致可以分为两种:
第一种是应用类程序:qq,微信之类
第二种是web类程序:用户只需访问浏览器即可访问程序,如百度,知乎,必应等
1.C/S架构
C/S即:Clien与Server,中文意思,客户端与服务器架构
这里的客户端泛指exe
2.B/S架构
B/S即:Browser与Server,中文意思,浏览器端与服务器端架构
只需在浏览器通过HTTP去请求服务器端的相关资源
二、网络协议
网络协议就是为了能让计算机网络中进行数据交换二建立的规则、标准
我们根据协议的功能,不同抽象成立4层
应用层,传输层,网络层,数据链路层
或7层
应用层,表示层,会话层,传输层,网络层,数据链路层,物理层
三、TCP协议
TCP是面向连接的,可靠的协议
特点:数据安全,速度略低,分客户端和服务端
1.三次握手
2.四次挥手
四、UDP协议
面向无连接,数据不安全,速度快,不分客户端和服务端
五、socket
我们写的网络编程属于应用层,当我们写好程序后,需要将数据发送给运(传)输层。但是我们不了解运输层的协议,因此提供了socket层。对于用户来说,让socket去组织数据,以符合指定的协议,我们只负责编写逻辑即可。
简易聊天室
from socket import *
from threading import Thread
udp_s=socket(AF_INET,SOCK_DGRAM)
dest_address=(‘10.10.107.118’,8001)目的地址
udp_s.bind((‘10.10.107.118’,9002))绑订自身端口
def sent():
while True:
data=input(’’)
udp_s.sendto(data.encode(‘utf-8’), dest_address)
def recv():
while True:
s = udp_s.recvfrom(124)
print(s[0].decode(‘utf-8’))
if name == ‘main’:
t1=Thread(target=sent)
t2=Thread(target=recv)
t1.start()
t2.start()
上述代码,将目的地址和自身地址交换,再写一份文件,即可实现自己与自己聊天,也可以和局域网的朋友聊天。