python六十九課 網路程式設計之TCP協議

2022-06-19 12:57:12 字數 2629 閱讀 5085

1.1概述:

tcp協議通過三次握手協議將客戶端與伺服器端連線,兩端使用各自的socket物件。socket物件中包含了io流,供資料傳輸。

即:tcp協議在客戶端與伺服器端通過socket組成了io通道,資料在io通道中傳輸,客戶端傳輸的資料成佇列方式寫出,伺服器端接收,同樣伺服器端傳輸的資料成佇列方式寫出,客戶端接收。

tcp協議的特點:面向連線、可靠(安全)、效率慢

類似於我們生活中的打**

舉例:上網 --> 滿足http協議(使用的還是tcp的還一套,因為http是tcp的子協議)

tcp的連線過程:3次握手

客戶端服務端

a:哥們,你能聽見我說話嗎?

b:我能,你能聽見我說話嗎?

a:我也能,那我們開始說話吧

開始進行資料傳輸的過程(客和服之間來來回回)

斷開連線的過程:第4次揮手

整理:核心物件:socket物件

和傳送與接收資料有關的函式:send()、recv()

tcp_cilent.py

import

socket

'''實現tcp程式的客戶端的程式設計

核心:得到socket物件

在建立物件的過程中,需要傳入兩個引數

第乙個引數:滿足的是ipv4的規則(socket.af_inet)

第二個引數:判斷/確定到底是滿足tcp協議還是udp協議的規則程式設計(socket.sock_stream)

面向連線的程式設計:

'''#

得到客戶端的socket物件

tcp_cilent_socket=socket.socket(socket.af_inet,socket.sock_dgram)

#定義伺服器的ip和埠號(封裝到乙個元組物件中)

tcp_server = ('

10.11.63.132

',8888)

#連線伺服器

tcp_cilent_socket.connect(tcp_server)

#迴圈傳送和接受資料

while 1:

#客戶端從鍵盤輸入資料(字串)

data = input('

>>>:')

#將客戶端的資料傳送給伺服器,我們在這個過程中需要對資料進行編碼操作(有一定的安全性保障)

tcp_cilent_socket.send(data.encode('

utf-8'))

#接受伺服器給客戶端傳遞(傳送)過來的資料並且進行解碼操作

recv_data = tcp_cilent_socket.recv(1024)

print('

伺服器:

' + recv_data.decode('

gbk'

))

#關閉套接字物件

tcp_cilent_socket.close()

tcp_server.py

import

socket

'''實現tcp程式的客戶端的程式設計

核心:得到socket物件

在建立物件的過程中,需要傳入兩個引數

第乙個引數:滿足的是ipv4的規則(socket.af_inet)

第二個引數:判斷/確定到底是滿足tcp協議還是udp協議的規則程式設計(socket.sock_stream)

面向連線的程式設計:

'''#

得到服務端的socket物件

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

#繫結服務端的ip和埠號(元祖)

tcp_server = ('

10.11.63.132

',8888)

tcp_server_socket.bind(tcp_server)

#開啟監聽

tcp_server_socket.listen()

#接受客戶端的訪問

new_socket,cilent_info =tcp_server_socket.accept()

#print(new_socket)

#print(cilent_info)

#迴圈接受和傳送資料

while 1:

#接受客戶端發來的資料

recv_date = new_socket.recv(1024)

print('

客戶端:

' + recv_date.decode('

utf-8'))

#給客戶端傳送資料

data = input('

>>>:')

new_socket.send(data.encode(

'gbk'))

#關閉兩個套接字物件

new_socket.close()

tcp_server_socket.close()

返回目錄

PYTHON第六十九天筆記11 30星期四

day69 今日內容 老師資訊 任教班級 的增刪改查 模板語言for迴圈 要做的事兒 要做的事兒 查詢老師表和teacher2class select teacher.id,teacher.name,teacher2class.class id from teacher left join teac...

python入門教程之十九網路程式設計socket

網路層是位址簇 客戶端寫法 import socket client socket.socket 宣告socket型別,同時生成socket連線物件 client.connect localhost 6969 連線本地埠 client.send hello world data client.rec...

Python網路程式設計之UDP

udp處理資料報,是一種無連線的協議 伺服器端 server socket.socket socket.af inet,socket.sock dgram 繫結ip server.bind 192.168.1.104 221 while true 接收 data,address server.rec...