python視頻教程之socket使用實例詳解
今天扣丁學堂給大家詳細介紹一下關于python視頻教程之socket使用實例,首先Python在網絡通訊方面功能強大,學習一下Socket通訊的基本方式吧。下面我們一起來看一下吧。
UDP通訊:
Server:
importsocket
port=8081
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
#從指定的端口,從任何發(fā)送者,接收UDP數(shù)據(jù)
s.bind(('',port))
print('正在等待接入...')
whileTrue:
#接收一個數(shù)據(jù)
data,addr=s.recvfrom(1024)
print('Received:',data,'from',addr)
Client:
importsocket
port=8081
host='localhost'
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.sendto(b'hello,thisisatestinfo!',(host,port))
很簡單。下面是TCP方式:
Server:
#-*-coding:utf-8-*-
fromsocketimport*
fromtimeimportctime
HOST=''
PORT=12345
BUFSIZ=1024
ADDR=(HOST,PORT)
sock=socket(AF_INET,SOCK_STREAM)
sock.bind(ADDR)
sock.listen(5)
whileTrue:
print('waitingforconnection')
tcpClientSock,addr=sock.accept()
print('connectfrom',addr)
whileTrue:
try:
data=tcpClientSock.recv(BUFSIZ)
except:
print(e)
tcpClientSock.close()
break
ifnotdata:
break
s='Hi,yousendme:[%s]%s'%(ctime(),data.decode('utf8'))
tcpClientSock.send(s.encode('utf8'))
print([ctime()],':',data.decode('utf8'))
tcpClientSock.close()
sock.close()
Client:
#-*-coding:utf-8-*-
fromsocketimport*
classTcpClient:
HOST='127.0.0.1'
PORT=12345
BUFSIZ=1024
ADDR=(HOST,PORT)
def__init__(self):
self.client=socket(AF_INET,SOCK_STREAM)
self.client.connect(self.ADDR)
whileTrue:
data=input('>')
ifnotdata:
break
self.client.send(data.encode('utf8'))
data=self.client.recv(self.BUFSIZ)
ifnotdata:
break
print(data.decode('utf8'))
if__name__=='__main__':
client=TcpClient()
上面的TCP方式有個問題,不能退出,好吧,我們改造一下,使這個程序可以發(fā)送quit命令以退出:
Server:
#-*-coding:utf-8-*-
fromsocketimport*
fromtimeimportctime
fromtimeimportlocaltime
importtime
HOST=''
PORT=1122#設置偵聽端口
BUFSIZ=1024
ADDR=(HOST,PORT)
sock=socket(AF_INET,SOCK_STREAM)
sock.bind(ADDR)
sock.listen(5)
#設置退出條件
STOP_CHAT=False
whilenotSTOP_CHAT:
print('等待接入,偵聽端口:%d'%(PORT))
tcpClientSock,addr=sock.accept()
print('接受連接,客戶端地址:',addr)
whileTrue:
try:
data=tcpClientSock.recv(BUFSIZ)
except:
#print(e)
tcpClientSock.close()
break
ifnotdata:
break
#python3使用bytes,所以要進行編碼
#s='%s發(fā)送給我的信息是:[%s]%s'%(addr[0],ctime(),data.decode('utf8'))
#對日期進行一下格式化
ISOTIMEFORMAT='%Y-%m-%d%X'
stime=time.strftime(ISOTIMEFORMAT,localtime())
s='%s發(fā)送給我的信息是:%s'%(addr[0],data.decode('utf8'))
tcpClientSock.send(s.encode('utf8'))
print([stime],':',data.decode('utf8'))
#如果輸入quit(忽略大小寫),則程序退出
STOP_CHAT=(data.decode('utf8').upper()=="QUIT")
ifSTOP_CHAT:
break
tcpClientSock.close()
sock.close()
Client:
#-*-coding:utf-8-*-
fromsocketimport*
classTcpClient:
#測試,連接本機
HOST='127.0.0.1'
#設置偵聽端口
PORT=1122
BUFSIZ=1024
ADDR=(HOST,PORT)
def__init__(self):
self.client=socket(AF_INET,SOCK_STREAM)
self.client.connect(self.ADDR)
whileTrue:
data=input('>')
ifnotdata:
break
#python3傳遞的是bytes,所以要編碼
self.client.send(data.encode('utf8'))
print('發(fā)送信息到%s:%s'%(self.HOST,data))
ifdata.upper()=="QUIT":
break
data=self.client.recv(self.BUFSIZ)
ifnotdata:
break
print('從%s收到信息:%s'%(self.HOST,data.decode('utf8')))
if__name__=='__main__':
client=TcpClient()
以上就是關于python模塊之socket實例的詳細介紹,最后想要了解更多關于Python發(fā)展前景趨勢,請關注扣丁學堂官網、微信等平臺,扣丁學堂IT職業(yè)在線學習教育平臺為您提供權威的Python培訓視頻教程系統(tǒng),通過千鋒扣丁學堂金牌講師在線錄制的第一套自適應Python在線視頻課程系統(tǒng),讓你快速掌握Python從入門到精通開發(fā)實戰(zhàn)技能??鄱W堂Python技術交流群:816572891。
*博客內容為網友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯(lián)系工作人員刪除。