網路程式設計基礎【day08】:簡單socket例項(二)
阿新 • • 發佈:2018-11-02
本節內容
1、概述
2、socket例項
3、總結
一、概述
之前我們只是介紹了soket的概念和一些邏輯圖表,下面我們來看看,socket的客戶端和服務端到底是怎麼用的?
二、socket例項
2.1 客戶端
2.1.1 客戶端程式碼邏輯圖
2.1.2 客戶端程式碼
1 2 3 4 5 6 7 8 9 10 |
import
socket
#匯入socket模組
client
=
socket.socket()
#建立socket例項
client.connect((
"localhost" ,
6969
))
#建立連線
send_data
=
"hello word!"
#傳送的字串
send_data
=
send_data.encode()
#因為傳送是bytes型別,所以這邊先轉碼成bytes型別 client.send(send_data)
#傳送資料,這邊傳送的是位元組型別,也就是bytes型別
data
=
client.recv(
1024
)
#接收服務端的資料,這邊設定接收1024位元組 1kb=1024位元組
print
(
"server rece:"
,data.decode())
client.close()
#關閉與服務端的連結
|
2.2 服務端
2.2.1 服務端程式碼邏輯圖
2.2.2 服務端程式碼
1 2 3 4 5 6 7 8 9 10 11 12 |
import
socket
sever
=
socket.socket()
#建立服務端例項
sever.bind((
"localhost"
,
6969
))
#繫結客戶端ip和埠
sever.listen()
#監聽埠
print
(
"我在電話了...."
)
conn,addr
=
sever.accept()
#接收客戶端,並且返回連線標誌位(conn)例項,和對方的ip地址(addr)
data
=
conn.recv(
1024
)
#接收客戶端發過來的資料,接收的也是bytes型別的資料
print
(
"我的電話來了"
)
print
(
"client data:"
,data.decode())
conn.send(data.upper())
#傳送資料至服務端,注意這邊傳送的也是位元組型別,是bytes型別
sever.close()
#關閉服務端
|
三、總結
- python2中可客戶端或者服務端均可傳送字串和位元組,但是在python3中只能發位元組,也就bytes型別的位元流
- 服務端接收客戶端的連結時,會返回跟客戶端的連結標誌位的例項和對方ip地址+隨機埠號
- 此例子只是TCP/IP協議的socket連結,後面繼續學習UDP的連結