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更多的功...