Maison > développement back-end > Tutoriel Python > Introduction détaillée à la programmation réseau socket en python (avec exemples)

Introduction détaillée à la programmation réseau socket en python (avec exemples)

不言
Libérer: 2018-10-13 16:34:49
avant
3150 Les gens l'ont consulté

Cet article vous apporte une introduction détaillée à la programmation réseau socket en Python (avec des exemples). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Trois éléments de la communication réseau

  • IP

Lors de la communication, les deux parties Vous devez connaître l'identité de l'autre partie, tout comme vous devez connaître son adresse e-mail lorsque vous envoyez un e-mail. L'identifiant unique de chaque ordinateur sur Internet est son adresse IP, similaire à 123.123.123.123.

L'adresse IP est en réalité un entier de 32 bits (appelé IPv4). L'adresse IP représentée par une chaîne, telle que 192.168.0.1, est en réalité un entier de 32 bits regroupé par 8 bits. .
L'adresse IPv6 est en fait un entier de 128 bits, qui est une version améliorée de l'IPv4 actuellement utilisé et est représentée par une chaîne. Similaire à 2001:0db8:85a3:0042:1000:8a2e:0370:7334 .
  • port port

Lorsque deux ordinateurs communiquent, il ne suffit pas d'envoyer uniquement l'adresse IP, car plusieurs ordinateurs fonctionnent sur le même ordinateur. Après l'arrivée d'un paquet IP, qu'il soit transmis au navigateur ou à QQ, il faut un numéro de port pour le distinguer.

Chaque programme réseau demande un numéro de port unique au système d'exploitation. De cette manière, deux processus ont besoin de leurs propres adresses IP et numéros de port respectifs pour établir une connexion réseau entre deux ordinateurs.

  • Protocole TCP/UDP

Afin de connecter tous les différents types d'ordinateurs à travers le monde, un ensemble de A mondialement accepté protocole, tout le monde appelle le protocole Internet protocole TCP/IP

Programmation de socket

Socket est un concept abstrait de programmation réseau. Habituellement, nous utilisons un Socket pour signifier "ouvrir un lien réseau", et pour ouvrir un Socket, vous devez connaître l'adresse IP et le numéro de port de l'ordinateur cible, puis spécifier le type de protocole.

import socket
# socket.gethostname()当不传入参数时,返回本机主机名
print(socket.gethostname()) #DESKTOP-EN0LQJH

#域名(英语:Domain Name),简称域名、网域,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称
#通过域名查找服务器IP地址
print(socket.gethostbyname('www.baidu.com'))    #119.75.216.20

#通过一个IPv4的地址来获取主机信息
print(socket.gethostbyaddr('114.114.114.114'))

#通过IP/port组合,访问服务器信息
# 如果是AF_INET则格式为:(address, port),如果为AF_INET6,则返回(address, port, flow info, scope id)

print(socket.getaddrinfo('www.xunlei.com',80))
Copier après la connexion

Introduction détaillée à la programmation réseau socket en python (avec exemples)

Utiliser socket pour implémenter un serveur Web simple

import socket
def reply_info(socketObj):
    # socketObj.send('ok')
    with open('hello.html') as f:
        socketObj.send(f.read().encode('utf-8'))
if __name__=="__main__":
    #1. 创建socket对象
    socket_server = socket.socket()
    #2. 绑定IP和端口
    socket_server.bind(('192.168.1.165',9999))
    print("服务器端已经启动9999端口......")
    #3. 监听是否有客户端连接
    socket_server.listen(5)

    while True:
        # 4. 接受客户端的连接
        socket_client,address = socket_server.accept()
        # 5. 接收客户端发来的信息
        data = socket_client.recv(1024)
        # 6. 与客户端进行交互, 返回给客户端信息
        reply_info(socket_server)
        socket_server.close()
Copier après la connexion

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!

Étiquettes associées:
source:segmentfault.com
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