1. 程式人生 > 實用技巧 >網路程式設計-01-服務端搭建

網路程式設計-01-服務端搭建

'''
1.軟體
軟體APP形式: cs架構, client --> server. (-->:客戶端與服務端是通過網路連線的)
遊覽器形式: BS架構, browser --> server

2.如何實現相互通訊?
(1)相互通訊本質是傳送01程式碼
(2)交換機的作用
(3)通過ipconfig檢視自己的內網IP
(4)公網IP,掏錢

3.socket模組是專門用來實現網路通訊的

4.一個程式要有自己獨立的埠,不能與其他程式重複,否則會造成連線紊亂.例如伺服器的電腦上同時有qq(埠:8001) 與 微信(埠:8002)這兩款程式,

則可以認為伺服器電腦上提供(開放)了兩個埠,一個對應qq程式的,一個對應微信程式的.當qq的資料從客戶端發來了,就需要去qq對應的埠8001上進行連線.
同理當微信的資料來了,就去連線8002埠.
設定不同埠實現了,收發資料時不同程式之間的相互隔離.




'''
import socket

# 建立服務端的socket物件
server = socket.socket()

# 繫結IP和埠.'192.168.13.155'是自己IP地址,用來標識你自己.'8000'是不同程式的埠,為了實現程式與程式之間的相互隔離.
server.bind(('192.168.43.148', 8000))


# 後面最多排5個可以對服務端進行連線
server.listen(5)

# 等待客戶端來連線,如果沒人來就傻傻的等待,也即這行程式碼可以阻塞程式
conn, addr = server.accept() # conn是客戶端和服務端連線的物件,伺服器以後要通過該物件進行收發資料.addr是客戶端地址資訊.

# 通過物件去獲取(接收)客戶端傳送的資訊,recv要是未接受到客戶端傳送的資訊,那服務端會一直等,也即recv會阻塞程式向下進行.
data = conn.recv(1024) # 1024表示一次性最多可獲取(接收)1024個位元組

# 列印從客戶端接收的資訊
print(data)

# 給客戶端回一個資訊,也是通過連線物件conn進行的資訊回覆,回一個位元組形式的'stop'

conn.send(b'stop')

# 通過連線物件關閉連線,但客戶端依舊存在
conn.close()

# 關閉服務端的服務,關閉後就不能再有客戶端連線上服務端了
server.close()