python之socket程式設計4

2022-07-19 09:03:07 字數 2890 閱讀 4173

基於tcp的套接字,關鍵是兩個迴圈,乙個通訊迴圈,乙個鏈結迴圈

socketserver的 模組中分成兩類:

server類(解決連線問題)

request類(解決通訊問題)

server類:

request類:

繼承關係:

#服務端

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:使用者資料報協議

是無連線的

面向訊息的

不會產生粘包

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 首先 本屆課程的...