SOCKET編程
socket(套接字):是一個網絡通信的端點,能實現不同主機的進程通信, -通過IP+端口定位對方併發送消息的通信機制
分為UDP和TCP
客戶端Client: 發起訪問的一-方
服務器端Server: 接受訪問的一方
UDP編程
Server端流程
1.建立socket,socket是負貴具體通信的一個實例
2.綁定,為創建的socket指派固定的端口和ip地址
3.接受對方發送內容
4.給對方發送反饋,此步驟為非必須步驟
Client端流程
1.建立通信的socket
2.發送內容到指定服務器
3.接受服務器給定的反饋內容
服務器案例v01
客戶端案例v02
服務器程序要求永久運行,一般用死循環處理
改造的服務器版本v03
TCP編程
面向連接的傳輸,即每次傳輸之前需要建立一個連接
客戶端和服務端兩個程序需要編寫
Server端的編寫流程
1.建立Socket負責具體通信。這個socket其實只負責接受對方的請求
2.綁定端口和地址
3.監聽接入的訪問Socket
4.接受訪問的Socket,可以理解接受訪問即建立了一個通訊的鏈路通路
5.接受對方的發送內容,利用接收到的Socket接受內容
6.如果有必要,給對方發送反饋信息
7.關閉鏈路通路
Client端流程
1.建立通信socket
2.鏈接對方,請求跟對方建立通路
3.發送內容到對方服務器
4.接受對方的反饋
5.關閉鏈接通路
Server端:
import socket def tcp_server(): # 1、建立socket負責具體通信,這個和socket其實只負責接受對方的請求,真通信的是連接後 # socket.AF_INET:使用ipv4協議 # socket.SOCK_STREAM:使用tcp連接 sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 2、綁定IP以及端口 addr = ("192.168.200.2", 1914) sock.bind(addr) # 3、監聽接入的訪問socket sock.listen() while True: # 4、接受訪問的Socket 可以理解接受訪問即建立了一個通訊的連接通路 # accept 返回的元祖第一個元素賦值給SKT,利用接受到的socket接受內容 skt, addr = sock.accept() # 建立通道 # 5、接受對方發送的內容、利用接受到的socket接受內容 # 500 表示接受使用的buffersize # mgs = skt.receive(500) mgs = skt.recv(500) # 接受到的是bytes格式內容 # 想得到str格式的,需要進行解碼 msg = mgs.decode() print(msg) data = f'我已經收到了' # print(data) # 6、如果有必要、給對方反饋信息 skt.send(data.encode()) skt.close() if __name__ == '__main__': print("tcpstaring......") tcp_server() print("tcpstoping......")
client端
import socket def tcp_client(): a = 0 while a < 100: # 1、建立通信socket sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM) addr = ("192.168.200.2", 1914) sock.connect(addr) data = f"{a}你好 我是client,你收到了麼?" sock.send(data.encode()) rst = sock.recv(500) print(rst.decode()) sock.close() a+=1 if __name__ == '__main__': tcp_client()
[retouched ] Python Socket TCP雙端聊天功能實現過程詳解已經有373次圍觀