Python基礎語法學習16

2021-10-09 08:31:04 字數 4744 閱讀 1001

傳送的伺服器和客戶端

網路通訊

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 類似...