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 和...