Python基礎 網路程式設計

2021-10-19 12:17:33 字數 3394 閱讀 5419

1、tcp網路應用程式開發流程

客戶端流程

服務端流程

2、tcp客戶端程式開發

import socket

defrun_tcp_client()

: tcp_client_socket = socket.socket(socket.af_inet, socket.sock_stream)

tcp_client_socket.connect(

("127.0.0.1"

,9000))

send_data =

"hello"

.encode(

"utf8"

) tcp_client_socket.send(send_data)

recv_data = tcp_client_socket.recv(

1024

)print

(recv_data.decode(

"utf8"))

tcp_client_socket.close(

)if __name__ ==

'__main__'

: run_tcp_client(

)

3、tcp服務端程式開發

import socket

defrun_tcp_server()

: tcp_server_socket = socket.socket(socket.af_inet, socket.sock_stream)

tcp_server_socket.bind((""

,9000))

tcp_server_socket.listen(

128)

new_client, ip_port = tcp_server_socket.accept(

) recv_data = new_client.recv(

1024

)print

(f":"

) send_data =

"hi"

.encode(

"utf8"

) new_client.send(send_data)

tcp_server_socket.close(

)if __name__ ==

'__main__'

: run_tcp_server(

)

4、設定埠號復用

解決埠號占用問題

tcp_server_socket.setsockopt(socket.sol_socket, socket.so_reuseaddr,

true

)

5、多工版

客戶端

import socket

defrun_tcp_client()

: tcp_client_socket = socket.socket(socket.af_inet, socket.sock_stream)

tcp_client_socket.connect(

("127.0.0.1"

,9000))

while

true

: send_data =

input

("input send data >> "

).encode(

"utf8"

)if send_data:

tcp_client_socket.send(send_data)

recv_data = tcp_client_socket.recv(

1024

)print

(recv_data.decode(

"utf8"))

else

:break

tcp_client_socket.close(

)if __name__ ==

'__main__'

: run_tcp_client(

)

服務端

import socket

import threading

defhandle_client_request

(new_client, ip_port)

:while

true

: recv_data = new_client.recv(

1024

)if recv_data:

print

(f":"

) send_data =

"hi, i'm tcp server."

.encode(

"utf8"

) new_client.send(send_data)

else

:print

(f"[connection unestablished]:"

)break

new_client.close(

)def

run_tcp_server()

: tcp_server_socket = socket.socket(socket.af_inet, socket.sock_stream)

tcp_server_socket.setsockopt(socket.sol_socket, socket.so_reuseaddr,

true

) tcp_server_socket.bind((""

,9000))

tcp_server_socket.listen(

128)

while

true

: new_client, ip_port = tcp_server_socket.accept(

)print

(f"[connection established]:"

) sub_thread = threading.thread(target=handle_client_request, args=

(new_client, ip_port)

) sub_thread.setdaemon(

true

) sub_thread.start(

) tcp_server_socket.close(

)if __name__ ==

'__main__'

: run_tcp_server(

)

python網路程式設計基礎

客戶 伺服器架構 伺服器 是乙個軟體或硬體,用於提供客戶需要的 服務 伺服器存在的唯一目的就是等待客戶的請求,給這些客戶服務,然後再等待其他的請求.常見的服務型別 硬體的客戶 伺服器架構 印表機,檔案伺服器 軟體客戶 伺服器架構 web伺服器,資料庫伺服器,視窗伺服器 gui 套接字 用於程序間通訊...

python 網路程式設計基礎

python實在是太方便,太易用了,三方庫的支援又全,語法又簡單,對開發人員來說,實在是居家旅行,x的必備利器。週末研究了下python的網路支援,做一下記錄,以備隨後翻閱。python支援bsd的socket進行網路程式設計,其api跟c中的大同小異,先看看tcp方式的,說到網路程式設計,肯定會設...

python網路程式設計基礎

目錄 標籤 空格分隔 網路程式設計 目錄tcp和udp tcp的使用是面向連線的,即資料的傳輸必須基於虛鏈路的完整建立。虛鏈路的建立提供了很多優秀的功能,比如確認重傳以保證資料的完整性,滑動視窗以保證資料傳輸的高效性,各類選項字段提供不同的可選功能。tcp的缺點是報頭大,因為需要包含比udp更多的功...