Maison > développement back-end > Tutoriel Python > Introduction à la méthode d'implémentation de la communication socket en python

Introduction à la méthode d'implémentation de la communication socket en python

高洛峰
Libérer: 2017-03-04 16:25:01
original
1666 Les gens l'ont consulté

L'exemple de cet article décrit comment implémenter une communication socket simple en python. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

Je viens de commencer à entrer en contact avec python et j'ai implémenté un programme helloworld --- une démonstration de communication socket sur le protocole UDP.

Tout d'abord, le côté serveur est implémenté comme suit :

import socket, traceback
host = '' # Bind to all interfaces 
port = 51500
# Step1: 创建socket对象
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# Step2: 设置socket选项(可选)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
# Step3: 绑定到某一个端口
s.bind((host, port))
# Step4: 监听该端口上的连接
while 1:
  try:
    message, address = s.recvfrom(8192)
    print "Got data from ", address
    s.sendto("Data is received succeefully.", address)
  except (KeyboardInterrupt, SystemExit):
    print "raise"
    raise
  except :
    print "traceback"
    traceback.print_exc()
Copier après la connexion

Parmi eux, l'hôte est défini sur vide, ce qui signifie qu'il peut être lié à toutes les interfaces et adresses, quel que soit le client qui fait la demande, tant qu'il est lié au même port, le serveur peut écouter la demande.

Dans une connexion TCP, l'écoute des requêtes des clients nécessite l'utilisation de la fonction d'écoute ou d'acceptation, ainsi qu'un socket dédié et une connexion à distance.

Ensuite, laissez notre client implémenter :

import socket, sys
# Step1: 输入host和port信息
host = raw_input('please input host name: ')
textport = raw_input('please input textport: ')
# Step2: 创建socket对象
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
try:
  port = int(textport)
except ValueError:
  port = socket.getservbyname(textport, 'udp')
# Step3: 打开socket连接  
s.connect((host, port))
# Step4: 发送数据
print "Enter data to transmit: "
data = sys.stdin.readline().strip()
s.sendall(data)
# Step5: 接收服务器发过来的数据
print "Looking for replies; press Ctrl-C or Ctrl-Break to stop"
while 1:
  buf = s.recv(2048)
  if not len(buf):
    break
  sys.stdout.write(buf)
Copier après la connexion

Cet exemple est si simple, et l'implémentation est presque la même que celle du langage C version. Il semble que tant que vous comprendrez la programmation socket, l'implémentation dans différents langages sera presque la même.

Pour plus d'articles sur la façon dont Python implémente la communication par socket, veuillez faire attention au site Web PHP chinois !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal