1. 程式人生 > >day 26 網路通訊流程 初識socke

day 26 網路通訊流程 初識socke

一. ***

C/S架構:客戶端(client)/服務端(server)架構,

 

B/S架構:瀏覽器(browser) / 服務端(server)架構

 

軟體cs架構:瀏覽器,qq,微信,陌陌等等

硬體cs架構:印表機

 

二. 網路通訊的整個流程  ***

        集線器:將所有電腦聯通起來

交換機:升級版的集線器

網絡卡:接收處理電訊號

Mac地址:實體地址: 1C-1B-0D-74-43-9A  前三位廠商編號  後三位生產流水號

,全球唯一的,也就是你網路裝置的身份證號

姑娘的mac地址:約嗎?

 

 

 

Ip地址  IPv4 地址: 192.168.12.11  劃分廣播域

 

Ip地址段:192.168.12.0 --- 192.168.12.255 同一ip地址段,稱為同一子網,以廣播的形式通訊.192.168.0.0 -- 192.168.255.255  

 

子網掩碼:計算是否屬於同一網段,同一子網 255.255.255.0

 

目標ip地址是:192.168.12.16

 11000000.10101000.00001100.00010000

 255.255.255.0

 11111111.11111111.11111111.00000000

 11000000.10101000.00001100.00000000

 192.168.12.0  

 

 

DHCP協議:自動獲取IP地址

Arp協議:通過ip地址獲取mac地址

 

 

域名:www.jd.com

DNS服務端:{‘www.jd.com’:173.16.49.0}

 

 

 

 

三. 初識socket  *****

 

伺服器端程式碼

 

import socket
#匯入socket模組

#建立socket物件,建立了一個手機
server = socket.socket()

#給程式設定一個ip地址和埠號,買了個手機卡
ip_port = ('192.168.12.70', 8002)

#繫結ip地址和埠,插卡
server.bind(ip_port)

#監聽ip地址和埠,簡稱開機
server.listen()

print('111111')
#等待建立連線, conn是連線通道,addr是客戶端的地址,阻塞程式
conn, addr = server.accept()

print('222222')

#服務端通過conn連線通道來收發訊息,通過recv方法,recv裡面的引數是位元組(B),1024的意思1024B=1KB
from_client_msg = conn.recv(1024)

print('高旺說:', from_client_msg.decode('utf-8'))

to_client_msg = input('高旺的女朋友說:')

#回覆訊息:通過send方法,引數必須是位元組型別的,
conn.send(to_client_msg.encode('utf-8'))

#關閉通道,關電話,通過close方法
conn.close()
#關閉socket物件,關機
server.close()




客戶端程式碼


#匯入socket
import socket
#建立一個socket物件
client = socket.socket()
#找到服務端的ip地址和埠
server_ip_port = ('192.168.12.11',8002)
#連線服務端的應用程式,通過connect方法,引數是服務端的ip地址和埠,打電話
client.connect(server_ip_port)

to_server_msg = input('高旺說:')
#發訊息,用的send方法,但是呼叫者是client的socket物件
client.send(to_server_msg.encode('utf-8'))

from_server_msg = client.recv(1024)

print('高旺的女朋友說:',from_server_msg.decode('utf-8'))
client.close()