Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Einführung in die Socket-Netzwerkprogrammierung in Python (mit Beispielen)

Detaillierte Einführung in die Socket-Netzwerkprogrammierung in Python (mit Beispielen)

不言
不言nach vorne
2018-10-13 16:34:493117Durchsuche

Dieser Artikel bietet Ihnen eine detaillierte Einführung in die Socket-Netzwerkprogrammierung in Python (mit Beispielen). Ich hoffe, er wird Ihnen als Referenz dienen.

Drei Elemente der Netzwerkkommunikation

  • IP

Bei der Kommunikation sind beide Parteien beteiligt Sie müssen die Identität der anderen Partei kennen, genauso wie Sie beim Senden einer E-Mail die E-Mail-Adresse der anderen Partei kennen müssen. Die eindeutige Kennung jedes Computers im Internet ist seine IP-Adresse, ähnlich 123.123.123.123.

Die IP-Adresse ist tatsächlich eine 32-Bit-Ganzzahl (IPv4 genannt). Die durch eine Zeichenfolge dargestellte IP-Adresse, z. B. 192.168.0.1, ist tatsächlich eine Zahl, die durch Gruppieren der 32-Bit-Ganzzahl in 8 Bits dargestellt wird soll das Lesen erleichtern.
Die IPv6-Adresse ist eigentlich eine 128-Bit-Ganzzahl, eine aktualisierte Version der derzeit verwendeten IPv4 und wird durch eine Zeichenfolge dargestellt. Ähnlich wie 2001:0db8:85a3:0042:1000:8a2e:0370:7334 .
  • Port-Port

Wenn zwei Computer kommunizieren, reicht es nicht aus, nur die IP-Adresse zu senden, da mehrere Computer darauf laufen gleichen Computer. Nachdem ein IP-Paket eintrifft, ist zur Unterscheidung eine Portnummer erforderlich, um zu unterscheiden, ob es an den Browser oder an QQ übergeben wird.

Jedes Netzwerkprogramm beantragt eine eindeutige Portnummer vom Betriebssystem. Auf diese Weise benötigen zwei Prozesse ihre eigenen IP-Adressen und jeweiligen Portnummern, um eine Netzwerkverbindung zwischen zwei Computern herzustellen.

  • TCP/UDP-Protokoll

Um alle verschiedenen Arten von Computern auf der ganzen Welt zu verbinden, wird ein Satz von A weltweit akzeptiert Protokoll, jeder bezeichnet das Internetprotokoll als TCP/IP-Protokoll

Socket-Programmierung

Socket ist ein abstraktes Konzept der Netzwerkprogrammierung. Normalerweise verwenden wir einen Socket im Sinne von „Öffnen einer Netzwerkverbindung“. Um einen Socket zu öffnen, müssen Sie die IP-Adresse und die Portnummer des Zielcomputers kennen und dann den Protokolltyp angeben.

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))

Detaillierte Einführung in die Socket-Netzwerkprogrammierung in Python (mit Beispielen)

Socket zur Implementierung eines einfachen Webservers verwenden

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()

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in die Socket-Netzwerkprogrammierung in Python (mit Beispielen). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen