python網路程式設計 TCP網路程式設計

2021-09-19 03:38:00 字數 1978 閱讀 2802

tcp程式設計

'''客戶端'''

import socket

# # 1、套接字

tcp_socket = socket.socket(socket.af_inet,socket.sock_stream)

# 2、建立鏈結

tcp_socket.connect(('172.27.35.1',8080))

# 3、傳送資訊

tcp_socket.send('你好'.encode('gbk'))

# 4、接收資料

ret = tcp_socket.recv(1024)

print(ret.decode('gbk'))

#5.關閉連線

tcp_socket.close()

服務端:

基本思路為:

1、建立socke套接字;

2、需要使用bind來繫結埠;

3、listen監聽模式,等待接收使用者的鏈結,使得套接字變成被動狀態;

4、accept處理使用者鏈結

示例:

import threading

import socket

def recv_data(service_client_socket):

'''這個函式主要建立接收客戶端的訊息'''

# 收訊息

try:

while true:

data = service_client_socket.recv(1024)

if data:

print(data.decode('gbk'))

else:

service_client_socket.close()

break

except exception as e:

print(e)

if __name__ == '__main__':

# 1、套接字

server_socket = socket.socket(socket.af_inet,socket.sock_stream)

# 2、需要使用bind來繫結埠

server_socket.setsockopt(socket.sol_socket,socket.so_reuseaddr,true)

server_socket.bind(("",8080))

# 3、listen監聽模式,等待接收使用者的鏈結,使得套接字變成被動狀態

server_socket.listen()

while true:

# 主程式裡面只是實現建立新的服務套接字

service_client_socket,client_addressinfo = server_socket.accept()

print(service_client_socket)

print(client_addressinfo)

# 服務套接字服務的過程扔給多執行緒取處理,此時並不影響主程式床架服務套接字

recv_thread = threading.thread(target=recv_data,args=(service_client_socket,))

recv_thread.start()

tcp注意點:

1、 tcp伺服器一般情況下,需要繫結,不繫結客戶端找不到;

2、 tcp的客戶端不需要繫結,主動鏈結伺服器,這個時候,只需要知道伺服器的ip和埠;

3、 tcp服務端通過listen ()這個函式變主動為被動;

4、 客戶端必須通過connect之後才能與服務端通訊;

5、 accept()這個函式會建立乙個新的套接字,這個套接字用來服務對應的客戶端;

6、 關閉新的套接字(人工客服),說明服務已經完成;

7、 一般情況下,伺服器的套接字不用關閉;

8、 server_ocket在關閉之後,新的客戶端不能進行鏈結,但是已經鏈結的客戶端正常通訊|

python網路程式設計 TCP

一 網路通訊模式 對於網路通訊,現在遵循的是tcp ip協議組。而現在設計的通訊模式中,主要使用的是客戶端 伺服器程式設計,所謂的客戶端就是我們使用者所用的軟體,而服務端則是程式開發人員根據客戶端的需要設計的服務模式,為了是滿足客戶端的要求,實現和客戶端進行正常通訊。二 套接字 通訊的端點 對於tc...

Python 網路程式設計練習 TCP程式設計

socket是網路程式設計的乙個抽象概念。通常我們用乙個socket表示 開啟了乙個網路鏈結 而開啟乙個socket需要知道目標計算機的ip位址和埠號,再指定協議型別即可。大多數連線都是可靠的tcp連線。建立tcp連線時,主動發起連線的叫客戶端,被動響應連線的叫伺服器。客戶端 do client.p...

TCP網路程式設計

基於tcp 通訊模型 由上圖可以得出tcp通訊的步驟如下 服務端 1 建立乙個socket,用函式socket 2 繫結ip位址 埠等資訊到socket上,用函式bind 3 設定允許的最大連線數,用函式listen 4 等待來著客戶端的連線請求,用函式accept 5 收發資料,用函式send 和...