国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python Socket使用實例

2020-02-16 11:09:34
字體:
來源:轉載
供稿:網友

Python在網絡通訊方面功能強大,學習一下Socket通訊的基本方式

UDP通訊:

Server:

import socketport=8081s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)#從指定的端口,從任何發送者,接收UDP數據s.bind(('',port))print('正在等待接入...')while True:  #接收一個數據  data,addr=s.recvfrom(1024)  print('Received:',data,'from',addr)

Client:

import socketport=8081host='localhost's=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)s.sendto(b'hello,this is a test info !',(host,port))

很簡單 。下面是TCP方式:

Server:

#-*- coding: utf-8 -*-from socket import *from time import ctimeHOST=''PORT=12345BUFSIZ=1024ADDR=(HOST, PORT)sock=socket(AF_INET, SOCK_STREAM)sock.bind(ADDR)sock.listen(5)while True:  print('waiting for connection')  tcpClientSock, addr=sock.accept()  print('connect from ', addr)  while True:    try:      data=tcpClientSock.recv(BUFSIZ)    except:      print(e)      tcpClientSock.close()      break    if not data:      break    s='Hi,you send me :[%s] %s' %(ctime(), data.decode('utf8'))    tcpClientSock.send(s.encode('utf8'))    print([ctime()], ':', data.decode('utf8'))tcpClientSock.close()sock.close()

Client:

#-*- coding: utf-8 -*-from socket import *class TcpClient:  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)    while True:      data=input('>')      if not data:        break      self.client.send(data.encode('utf8'))      data=self.client.recv(self.BUFSIZ)      if not data:        break      print(data.decode('utf8'))      if __name__ == '__main__':  client=TcpClient()

上面的TCP方式有個問題,不能退出,好吧,我們改造一下,使這個程序可以發送quit命令以退出:

Server:

#-*- coding: utf-8 -*-from socket import *from time import ctimefrom time import localtimeimport timeHOST=''PORT=1122 #設置偵聽端口BUFSIZ=1024ADDR=(HOST, PORT)sock=socket(AF_INET, SOCK_STREAM)sock.bind(ADDR)sock.listen(5)#設置退出條件STOP_CHAT=Falsewhile not STOP_CHAT:  print('等待接入,偵聽端口:%d' % (PORT))  tcpClientSock, addr=sock.accept()  print('接受連接,客戶端地址:',addr)  while True:    try:      data=tcpClientSock.recv(BUFSIZ)    except:      #print(e)      tcpClientSock.close()      break    if not data:      break    #python3使用bytes,所以要進行編碼    #s='%s發送給我的信息是:[%s] %s' %(addr[0],ctime(), data.decode('utf8'))    #對日期進行一下格式化    ISOTIMEFORMAT='%Y-%m-%d %X'    stime=time.strftime(ISOTIMEFORMAT, localtime())    s='%s發送給我的信息是:%s' %(addr[0],data.decode('utf8'))    tcpClientSock.send(s.encode('utf8'))    print([stime], ':', data.decode('utf8'))    #如果輸入quit(忽略大小寫),則程序退出    STOP_CHAT=(data.decode('utf8').upper()=="QUIT")    if STOP_CHAT:      breaktcpClientSock.close()sock.close()            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 蒙山县| 涞水县| 隆尧县| 石阡县| 临汾市| 元氏县| 江达县| 平远县| 五常市| 鹿泉市| 郴州市| 延川县| 威海市| 赤峰市| 罗江县| 岢岚县| 贺州市| 静宁县| 二连浩特市| 龙井市| 高陵县| 玛多县| 兰州市| 宣威市| 新泰市| 建昌县| 喜德县| 天柱县| 曲阳县| 水城县| 垫江县| 新乡市| 沛县| 五原县| 全椒县| 延长县| 石棉县| 西和县| 富平县| 皋兰县| 定远县|