Maison  >  Article  >  développement back-end  >  Exemple d'explication de la communication synchrone socket en Python3

Exemple d'explication de la communication synchrone socket en Python3

巴扎黑
巴扎黑original
2017-08-09 10:54:551902parcourir

Cet article présente principalement la fonction de communication synchrone du socket Python3 et analyse les techniques d'implémentation côté client et serveur de communication synchrone du socket Python sous la forme d'exemples simples. Les amis dans le besoin peuvent s'y référer

Cet article. donne l'exemple de la communication synchrone du socket Python3. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

Cet article est relativement simple, adapté aux débutants, prenez une note pour faciliter les copies futures

Un serveur, un client et c'est une méthode de blocage. Un seul client peut être accepté pour se connecter et communiquer à la fois.

Le client envoie 'bye' pour mettre fin à la communication avec le serveur. S'il envoie 'shutdown', le serveur s'arrêtera tout seul !

Code serveur :


from socket import *
from time import ctime
HOST = ''
PORT = 21567
BUFSIZE = 1024
ADDR = (HOST, PORT)
tcpSerSock = socket(AF_INET, SOCK_STREAM)
tcpSerSock.bind(ADDR)
tcpSerSock.listen(5)
quit = False
shutdown = False
while True:
  print('waiting for connection...')
  tcpCliSock, addr = tcpSerSock.accept()
  print('...connected from: ', addr)
  while True:
    data = tcpCliSock.recv(BUFSIZE)
    data = data.decode('utf8')
    if not data:
      break
    ss = '[%s] %s' %(ctime(), data)
    tcpCliSock.send(ss.encode('utf8'))
    print(ss)
    if data == 'bye':
      quit = True
      break
    elif data == 'shutdown':
      shutdown = True
      break
  print('Bye-bye: [%s: %d]' %(addr[0], addr[1]))
  tcpCliSock.close()
  if shutdown:
    break
tcpSerSock.close()
print('Server has been

Code client :


from socket import *
HOST = 'localhost'
PORT = 21567
BUFSIZE = 1024
ADDR = (HOST, PORT)
tcpCliSock = socket(AF_INET, SOCK_STREAM)
tcpCliSock.connect(ADDR)
while True:
  data = input('>')
  if not data:
    continue
  print('input data: [%s]' %data)
  tcpCliSock.send(data.encode('utf8'))
  rdata = tcpCliSock.recv(BUFSIZE)
  if not rdata:
    break
  print(rdata.decode('utf8'))
  if data == 'bye' or data == 'shutdown':
    break
tcpCliSock.close()

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn