基於tcp的套接字,關鍵是兩個迴圈,乙個通訊迴圈,乙個鏈結迴圈
socketserver的 模組中分成兩類:
server類(解決連線問題)
request類(解決通訊問題)
server類:
request類:
繼承關係:
#服務端udp:使用者資料報協議import socketserver
class ftpserver(socketserver.baserequesthandler):
#定義乙個類,繼承socketserver.baserequesthandler
#通訊def handle(self):#規定乙個handle 規定死的
print(self.request)#客戶端的連線資訊
while true:#通訊迴圈
data=self.request.recv(1024)
print(data)
self.request.send(data.upper())
if __name__ == '__main__':
obj=socketserver.threadingtcpserver(("127.0.0.1",8080),ftpserver)#基於多執行緒實現併發
#產生乙個物件
obj.serve_forever()#連線迴圈
#客戶端
import socket
phone=socket.socket(socket.af_inet,socket.sock_stream)
phone.connect(("127.0.0.1",8080))
while true:
msg=input(">>")
if not msg:continue
phone.send(msg.encode("utf8"))
data=phone.recv(1024)
print(data)
>>
b'111'
b'2'
b'22'
是無連線的
面向訊息的
不會產生粘包
udp是不可靠傳輸
#服務端import socket
udpserver=socket.socket(socket.af_inet,socket.sock_dgram)
udpserver.bind(("127.0.0.1",8080))
#udp沒有鏈結,不用listen,accpect
while true:#通訊迴圈
data,client_addr=udpserver.recvfrom(1024)
print(data)
print(client_addr)
msg=input(">>")
udpserver.sendto(msg,client_addr)
#客戶端
import socket
udpclient=socket.socket(socket.af_inet,socket.sock_dgram)
ip_port=(("127.0.0.1",8080))
while true:
inp=input(">>")
udpclient.sendto(inp.encode("utf8"),ip_port)
data,server_addr=udpclient.recvfrom(1024)
print(data.decode("utf8"))
udp的socketserver併發
#服務端
import socketserver
class ftpserver(socketserver.baserequesthandler):
def handle(self):
print(self.request[0])
print(self.request[1])
self.request[1].sendto('嘎嘎嘎'.encode('utf-8'),self.client_address)
if __name__ == '__main__':
obj=socketserver.threadingudpserver(('127.0.0.1',8080),ftpserver)
obj.serve_forever()
#客戶端
import socket
phone=socket.socket(socket.af_inet,socket.sock_stream)
phone.connect(('127.0.0.1',8080))
while true: #通訊迴圈
msg=input('>>: ').strip()
if not msg:continue
phone.send(msg.encode('utf-8'))
# print('has send**********=>')
data=phone.recv(1024)
# print('has recv**********=>')
print(data)
phone.close()
Python之socket網路程式設計
實現主機間或一台電腦上的程序間進行通訊 例項如下 服務端 匯入socket sys模組 import socket import sys 建立socket物件 serversocket socket.socket socket.af inet,socket.sock stream 獲取本地主機名 h...
Python之Socket網路程式設計
socket起源於unix,而unix linux基本哲學之一就是 一切皆檔案 對於檔案用 開啟 讀寫 關閉 模式來操作。socket就是該模式的乙個實現,socket即是一種特殊的檔案,一些socket函式就是對其進行的操作 讀 寫io 開啟 關閉 socket和file的區別 1 file模組是...
Python基礎之socket程式設計
1 硬體c s架構 印表機 2 軟體c s架構 網際網路中處處是c s 架構 如各種 的服務端,你的瀏覽器就是客戶端 b s架構也是c s 架構的一種 c s架構與socket的關係 我們學習socket就是為了完成c s架構的開發 為何學習socket一定要先學習網際網路協議 1 首先 本屆課程的...