基於tcp協議通訊的套接字

2022-09-02 18:33:08 字數 2340 閱讀 8301

以打**舉例:

import

socket

#1.買手機

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

#sock_steam=>tcp流式協議,

#2.撥號

phone.connect(('

127.0.0.1

',8080))

#3.發\收訊息

phone.send('

hello

'.encode('

utf-8

')) #

只能發bytes型別

data=phone.recv(1024)

print('

收到服務端的訊息:

',data)

#4.掛**鏈結

phone.close()

客戶端

import

socket

#1.買手機

phone=socket.socket(socket.af_inet,socket.sock_stream) #

sock_steam=>tcp流式協議,

print(phone) #

是用來接收鏈結請求,從而建立鏈結的

#結果:

#2.插手機卡

phone.bind(('

127.0.0.1

',8080)) #

0-65535

#3.開機

phone.listen(5) #

同一時刻最大請求數為5個

print('

start....')

#4.等待**請求

conn,client_addr=phone.accept() #

(雙向鏈結的套接字物件,存放客戶端ip和埠的小元組)

print(conn) #

conn代表雙向鏈結,用來收發訊息

#結果:

print

(client_addr)

#結果:('127.0.0.1', 3482)

#5.收\發訊息

data=conn.recv(1024) #

1024接收的最大位元組數bytes

print('

收到客戶的資料

',data)

conn.send(data.upper())

#6.掛**鏈結

conn.close()

#7.關機

phone.close()

服務端

服務端套接字函式s.bind()    繫結(主機,埠號)到套接字

s.listen() 開始tcp監聽

s.accept() 被動接受tcp客戶的連線,(阻塞式)等待連線的到來

客戶端套接字函式s.connect()     主動初始化tcp伺服器連線

s.connect_ex() connect()函式的擴充套件版本,出錯時返回出錯碼,而不是丟擲異常

公共用途的套接字函式

s.recv() 接收tcp資料

s.send() 傳送tcp資料(send在待傳送資料量大於己端快取區剩餘空間時,資料丟失,不會發完)

s.sendall() 傳送完整的tcp資料(本質就是迴圈呼叫send,sendall在待傳送資料量大於己端快取區剩餘空間時,資料不丟失,迴圈呼叫send直到發完)

s.recvfrom() 接收udp資料

s.sendto() 傳送udp資料

s.getpeername() 連線到當前套接字的遠端的位址

s.getsockname() 當前套接字的位址

s.getsockopt() 返回指定套接字的引數

s.setsockopt() 設定指定套接字的引數

s.close() 關閉套接字

面向鎖的套接字方法

s.setblocking() 設定套接字的阻塞與非阻塞模式

s.settimeout() 設定阻塞套接字操作的超時時間

s.gettimeout() 得到阻塞套接字操作的超時時間

面向檔案的套接字的函式

s.fileno() 套接字的檔案描述符

s.makefile() 建立乙個與該套接字相關的檔案

基於tcp協議的套接字

簡單版本 一 服務端 import socket 1 買手機 拿到套接字物件,用來鏈結建立鏈結 phone socket.socket socket.af inet,socket.sock stream tcp稱為流式協議sock stream,udp稱為資料報協議sock dgram print ...

基於TCP協議的套接字程式設計

socket是應用層與tcp ip協議族通訊的中間軟體抽象層,它是一組介面。在設計模式中,socket其實就是乙個門面模式,它把複雜的tcp ip協議族隱藏在socket介面後面,對使用者來說,一組簡單的介面就是全部,讓socket去組織資料,以符合指定的協議。socket模板已經為我們封裝好了,我...

基於TCP協議的套接字程式設計

基於socket通訊的內部演算法,當傳送的訊息為空的時候,接收端不會收到訊息,而傳送端向下執行到recv,兩端出於僵持狀態。所以在傳送端需要有個判斷,如果傳送的為空,則重新輸入傳送內容。socket是應用層與tcp ip協議通訊的中間軟體抽象層,它是一組介面。import socket 買手機 ph...