day 26 CS架构,网络通信以及socket

一 . CS架构

        C是指client客户端,S是指服务端server,两个在一起就是客户端,服务端架构:比如像京东,淘宝,微信,QQ

        还有BS架构,B是browser浏览器,S还是服务端server,有个统一接口,比如微信里的小程序,类似于进网页浏览的

        还有硬件CS架构:就是打印机

二 . 网络通信以及流程

       首先,我们网络想上网,必须具备1.网线(传输电信号)2.集线器(将所有来凝结到集线器的网络设备连通起来)3.交换机(

升级版的集线器 ) 4.网卡(接受电信号)  5.MAC地址(也称物理地址,8C-EC-4B-88-B9-C9)前三位厂商编号,后三位生产流水号

6.与一台电脑与一台交换机进行单播,一台交换机与多台电脑进行广播7.IP地址:4个点分十进制 8.路由器:用来转发消息,那么,路由器用来转发消息的时候,它如果像发送消息的另外一台路由器相隔距离太远,由此就出现了路由协议,它是来计算路由转发消息的最优路径。

        说了这么多,如果说我想从我这台电脑访问到京东的服务器,是怎么运作的呢?

        首先,我这台电脑得单播到交换机,交换机可以连接多态电脑,发给多台电脑叫做广播,这个区域叫做子网,交换机然后通过子网掩码来计算是否网段,然后通过RNS服务器来找域名(也就是网址)对应的Ip地址,多台路由器之间有路由协议,找到最佳路径,通过端口地址反射确定电脑上的唯一的一个程序的服务器,就完成了网络通信。

三 . 初始socket

       创建两个py文件,一个client客户端,一个server服务端      

server服务端代码:

import socket

#实例化socket对象
server = socket.socket() #创建了一部手机

ip_port = ('192.168.15.46',8001) #买个电话卡

#绑定IP地址和端口
server.bind(ip_port) #插卡

#监听,
server.listen() #开机
#等待客户端连接
print(111111)
conn,addr = server.accept() #等别人的电话,阻塞

print(222222)
print(conn)
print(addr)
#发送消息
# conn.send(b'leihao') #必须是bytes类型的数据

while 1:
server_msg = input('王斌>>>>')

conn.send(server_msg.encode('utf-8')) #必须是bytes类型的数据

#接受消息
from_client_msg = conn.recv(1024) #1024,一次性能够接受的消息大小1024B

print('来自俊豪妹的消息',from_client_msg.decode('utf-8'))

# conn.send(b'gun')
#挂电话,关闭通道
conn.close()
#关机,关闭socket
server.close()

客户端:

import socket
client = socket.socket() #
#服务端的ip地址和端口
server_ip_port = ('192.168.15.46',8001)
#连接服务端的应用程序
client.connect(server_ip_port)

while 1:
from_server_msg1 = client.recv(1024) #阻塞
print('来自王斌消息:',from_server_msg1.decode('utf-8'))
client_msg = input('俊豪妹>>>')
client.send(client_msg.encode('utf-8'))

from_server_msg = client.recv(1024)

print('来自服务端的消息:',from_server_msg)
client.close()

原文地址:https://www.cnblogs.com/liuteacher/p/9995761.html