傳送的伺服器和客戶端
網路通訊
socket又叫套接字,指的是實現通訊的兩個端。
套接字分為伺服器套接字和客戶端套接字兩種。 伺服器套接字會繫結乙個固定的ip然後等待客戶端來連線它,正常情況下乙個伺服器是可以同時和多個客戶端保持連線的;客戶端套接字不需要繫結ip,在需要的時候主動連線伺服器套接字。
用**實現能夠通訊的伺服器和客服端。
python中提供了乙個模組叫socket專門用來支援socket程式設計的
from socket import socket
defmain()
:""""""
# 1.建立套接字物件(買**機)
"""socket(family,
type
)- 建立套接字物件
family - ip位址型別:af_inet(ipv4)、af_inet6(ipv6)
type
- 傳輸協議型別: sock_stream(tcp)、sock_dgram(udp)
""" server = socket()
# 2.繫結ip和埠(插**線)
"""套接字物件.bind(
(ip位址,埠號)
) ip位址 - 字串,執行當前伺服器程式的計算機的ip位址(10.7
.190
.131)
埠號 - 整數, 範圍是0
~65535,其中0
~1024是著名埠(同一時間同一臺計算機不能同時使用相同的埠)。埠就是用來區分同一臺計算機上不同服務(程式)
""" server.bind(
('10.7.190.131'
,12344))
# 3.監聽請求
# server.listen(最大通訊的數量)
server.listen(
200)
# 4.等待客戶端的連線
while
true
:print
('等待...'
)# 5.接受客戶端的請求(接**) - 這句**會阻塞執行緒,直到有客戶端的請求才會執行
connect, address = server.accept(
)# print(type(connect), type(server))
print
('建立連線成功!'
, address)
# 6.接受訊息(別人說我聽)
# connect.recv(一次性能夠接受的最大的位元組數) - 返回值就是接收到的資料
re_data = connect.recv(
1024
)print
(type
(re_data)
, re_data.decode())
# 7.傳送訊息(我說別人聽)
# 傳送網頁
# 傳送文字訊息
message =
input
('>>>'
) connect.send(message.encode())
# 8.關閉連線
connect.close(
)if __name__ ==
'__main__'
: main(
)
from socket import socket
# 1.建立套接字物件
client = socket(
)# 2.向伺服器傳送請求(打**)
client.connect(
('10.7.190.131'
,12344))
# 3.傳送訊息
message =
input
('>>>'
)client.send(message.encode(encoding=
'utf-8'))
# 4.接收訊息
re_data = client.recv(
1028
)print
(re_data.decode(encoding=
'utf-8'
))
from socket import socket
server = socket(
)server.bind(
('10.7.190.131'
,12344))
# ipconfig
server.listen(
100)
while
true
:print
('等待....'
) conection, address = server.accept(
)while
true
: message =
input
('自己:'
) conection.send(message.encode(encoding=
'utf-8'))
if message in
['拜拜'
,'再見']:
conection.close(
)break
re_message = conection.recv(
1024
).decode(encoding=
'utf-8'
)print
(f':'
)if re_message in
['拜拜'
,'再見']:
conection.close(
)break
from socket import socket
client = socket(
)client.connect(
('10.7.190.131'
,12344))
while
true
: re_message = client.recv(
1024
).decode(encoding=
'utf-8'
)print
(f'10.7.190.131:'
)if re_message in
['拜拜'
,'再見']:
client.close(
)break
message =
input
('>>>'
) client.send(message.encode(encoding=
'utf-8'))
if message in
['拜拜'
,'再見']:
client.close(
)break
from socket import socket
server = socket(
)server.bind(
('10.7.190.131'
,12346))
server.listen(
100)
while
true
:print
('等待....'
) conection, address = server.accept(
)# 傳送
with
open
('files/qq20200826-3.png'
,'rb'
)as f:
image_content = f.read(
)# 傳送檔案前需要先傳送檔案大小
length =
str(
len(image_content)
) conection.send(length.encode(encoding=
'utf-8'))
# 傳送檔案資料
conection.send(image_content)
from socket import socket
client = socket(
)client.connect(
('10.7.190.131'
,12346))
# 接受資料大小
length =
int(client.recv(
1024
).decode(encoding=
'utf-8'))
re_len =
0while
true
:print
('接受!'
('完成!'
)break
Python基礎語法學習
函式宣告 以def開始,不指名具體的返回型別,但是通常都會有返回值,即使為空。函式宣告後即可使用 def size a kilobyte is 1024 bytes true 在 python 裡面,變數從來不會顯式的指定型別。python 會在內部算出乙個變數的型別並進行跟蹤。只要你有乙個命名引數...
Python基礎語法學習
1 while loop 迴圈與判斷 while true x input if x q break else print x.upper 2 try except 異常處理 while true x input if x q break try x int x except print 1 els...
PYTHON 基礎語法學習
不需要宣告資料型別 a 10 語句不需要加分號 print hello world 縮排決定 塊的範圍,不需要大括號一.基本資料型別 數值型 整型,浮點型 字串 str 布林型 true false a true print type a 常用容器 資料儲存結構,能夠更好管理資料 列表list 類似...