Python-Netzwerkprogrammierung – TCP-Server-Multithreading
Verwandte Tags:1. Stärken Sie Ihr Web mit Python
2. Shodan und Python-API
Der TCP-Server stellt gleichzeitig Sockets zu mehreren Clients her, wobei ein Thread jeweils einen Client verwaltet.
1. Das Socket-Paket importieren
import socket
2. Einen Server-Socket erstellen
socket.socket(AddressFamily, Type)
socket.AF_INET steht für den IPv4-Typ
SOCK_STREAM bedeutet TCP
Port-Multiplexing muss eingerichtet werden, um mehrere Clients bedienen zu können
tcp_server_socket = socket.socket ( socket.AF_INET , socket.SOCK_STREAM ) _ _ _ _ _ _
#Port-Multiplexing: Beim Beenden des Servers wird der Port sofort freigegeben
tcp_server_socket.setsockopt ( socket.SOL_SOCKET , socket.SO_REUSEADDR , True ) _ _ _ _ _ _
3. Die Portnummer binden
tcp_server_socket.bind
Der erste Parameter steht für die IP-Adresse; in der Regel muss keine angegeben werden – eine leere Zeichenfolge steht für alle IPs des Rechners
Der zweite Parameter ist die Portnummer
tcp_server_socket.bind (( ' ' , 9090 ) )
4. Überwachung einrichten
Gibt die maximale Anzahl wartender Verbindungen an: 128
tcp_server_socket.listen ( 128 ) _ _
5. Auf die Verbindungsanfrage des Clients warten
Bei jeder erfolgreichen Verbindung zwischen Client und Server wird ein neuer Socket zurückgegeben
while True :
new_client , ip_port = tcp_server_socket.accept ( ) _
sub_thresd = threading . Thread ( target = handle , args = ( ip_port , new_client ))
sub_thresd.start ( ) _
6. Daten empfangen
Nachrichten über den neu zurückgegebenen Socket senden und empfangen
rece_data = new_client.recv ( 1024 ) _ _
if rece_data :
rece_data = rece_data.decode ( ' utf -8' )
print ( "Die empfangenen Daten lauten:" , rece_data )
7. Daten senden
send_content = "Problem wird bearbeitet"
send_data = send_content.encode ( ' utf -8' )
new_client.send ( send_data ) _ _
new_client.close ( ) _

8. Den Socket schließen
tcp_server_socket.close ( ) _
Code:
import socket
import threading
def handle ( ip_port , new_client ):
print ( "IP-Adresse und Portnummer des Clients: " , ip_port )
while True :
# 5. Daten empfangen
# Nachrichten über den neu zurückgegebenen Socket senden und empfangen
rece_data = new_client.recv ( 1024 ) _ _
if rece_data :
rece_data = rece_data.decode ( ' utf -8' )
print ( "Die empfangenen Daten lauten:" , rece_data )
# 6. Daten senden
send_content = "Problem wird bearbeitet"
send_data = send_content.encode ( ' utf -8' )
new_client.send ( send_data ) _ _
new_client.close ( ) _
else :
print ( "Client ist offline" , ip_port )
break
if __name__ == '__main__' :
# 1. Einen Server-Socket erstellen
# socket.AF_INET steht für den IPv4-Typ
# SOCK_STREAM bedeutet TCP
tcp_server_socket = socket.socket ( socket.AF_INET , socket.SOCK_STREAM ) _ _ _ _ _ _
tcp_server_socket.setsockopt ( socket.SOL_SOCKET , socket.SO_REUSEADDR , True ) _ _ _ _ _ _
#Port-Multiplexing: Beim Beenden des Servers wird der Port sofort freigegeben
#socket.SOL_SOCKET steht für den aktuellen Socket
#socket._RetAddress Multiplexing-Optionen
#True aktiviert das Multiplexing
# 2. Die Portnummer binden
# Der erste Parameter steht für die IP-Adresse; in der Regel muss keine angegeben werden – eine leere Zeichenfolge steht für alle IPs des Rechners
#Der zweite Parameter steht für die Portnummer
tcp_server_socket.bind (( ' ' , 9090 ) )
# 3. Überwachung einrichten
# 128: Gibt die maximale Anzahl wartender Verbindungen an
tcp_server_socket.listen ( 128 ) _ _
# 4. Auf die Verbindungsanfrage des Clients warten
#Bei jeder erfolgreichen Verbindung zwischen Client und Server wird ein neuer Socket zurückgegeben
while True :
new_client , ip_port = tcp_server_socket.accept ( ) _
sub_thresd = threading . Thread ( target = handle , args = ( ip_port , new_client ))
sub_thresd.start ( ) _
# 7. Den Socket schließen
tcp_server_socket.close ( ) _
Urheberrechtshinweis: Der Inhalt dieses Artikels wurde von实名 registrierten Benutzern der Alibaba Cloud eingereicht. Das Urheberrecht liegt beim ursprünglichen Autor. Die Alibaba Cloud Developer Community besitzt kein Urheberrecht und übernimmt keine entsprechende rechtliche Verantwortung. Für detaillierte Regelungen lesen Sie bitte die „Nutzungsvereinbarung der Alibaba Cloud Developer Community“ und die „Richtlinien zum Schutz geistigen Eigentums der Alibaba Cloud Developer Community“. Wenn Sie Inhalte finden, bei denen Plagiatsverdacht besteht, füllen Sie bitte das Beschwerdeformular für Urheberrechtsverletzungen aus. Nach Überprüfung wird die Community die angeblich rechtsverletzenden Inhalte umgehend löschen.
2. Shodan und Python-API
Übersicht
Der TCP-Server stellt gleichzeitig Sockets zu mehreren Clients her, wobei ein Thread jeweils einen Client verwaltet.
Implementierungsschritte
1. Das Socket-Paket importieren
import socket
2. Einen Server-Socket erstellen
socket.socket(AddressFamily, Type)
socket.AF_INET steht für den IPv4-Typ
SOCK_STREAM bedeutet TCP
Port-Multiplexing muss eingerichtet werden, um mehrere Clients bedienen zu können
tcp_server_socket = socket.socket ( socket.AF_INET , socket.SOCK_STREAM ) _ _ _ _ _ _
#Port-Multiplexing: Beim Beenden des Servers wird der Port sofort freigegeben
tcp_server_socket.setsockopt ( socket.SOL_SOCKET , socket.SO_REUSEADDR , True ) _ _ _ _ _ _
3. Die Portnummer binden
tcp_server_socket.bind
Der erste Parameter steht für die IP-Adresse; in der Regel muss keine angegeben werden – eine leere Zeichenfolge steht für alle IPs des Rechners
Der zweite Parameter ist die Portnummer
tcp_server_socket.bind (( ' ' , 9090 ) )
4. Überwachung einrichten
Gibt die maximale Anzahl wartender Verbindungen an: 128
tcp_server_socket.listen ( 128 ) _ _
5. Auf die Verbindungsanfrage des Clients warten
Bei jeder erfolgreichen Verbindung zwischen Client und Server wird ein neuer Socket zurückgegeben
while True :
new_client , ip_port = tcp_server_socket.accept ( ) _
sub_thresd = threading . Thread ( target = handle , args = ( ip_port , new_client ))
sub_thresd.start ( ) _
6. Daten empfangen
Nachrichten über den neu zurückgegebenen Socket senden und empfangen
rece_data = new_client.recv ( 1024 ) _ _
if rece_data :
rece_data = rece_data.decode ( ' utf -8' )
print ( "Die empfangenen Daten lauten:" , rece_data )
7. Daten senden
send_content = "Problem wird bearbeitet"
send_data = send_content.encode ( ' utf -8' )
new_client.send ( send_data ) _ _
new_client.close ( ) _

8. Den Socket schließen
tcp_server_socket.close ( ) _
Code:
import socket
import threading
def handle ( ip_port , new_client ):
print ( "IP-Adresse und Portnummer des Clients: " , ip_port )
while True :
# 5. Daten empfangen
# Nachrichten über den neu zurückgegebenen Socket senden und empfangen
rece_data = new_client.recv ( 1024 ) _ _
if rece_data :
rece_data = rece_data.decode ( ' utf -8' )
print ( "Die empfangenen Daten lauten:" , rece_data )
# 6. Daten senden
send_content = "Problem wird bearbeitet"
send_data = send_content.encode ( ' utf -8' )
new_client.send ( send_data ) _ _
new_client.close ( ) _
else :
print ( "Client ist offline" , ip_port )
break
if __name__ == '__main__' :
# 1. Einen Server-Socket erstellen
# socket.AF_INET steht für den IPv4-Typ
# SOCK_STREAM bedeutet TCP
tcp_server_socket = socket.socket ( socket.AF_INET , socket.SOCK_STREAM ) _ _ _ _ _ _
tcp_server_socket.setsockopt ( socket.SOL_SOCKET , socket.SO_REUSEADDR , True ) _ _ _ _ _ _
#Port-Multiplexing: Beim Beenden des Servers wird der Port sofort freigegeben
#socket.SOL_SOCKET steht für den aktuellen Socket
#socket._RetAddress Multiplexing-Optionen
#True aktiviert das Multiplexing
# 2. Die Portnummer binden
# Der erste Parameter steht für die IP-Adresse; in der Regel muss keine angegeben werden – eine leere Zeichenfolge steht für alle IPs des Rechners
#Der zweite Parameter steht für die Portnummer
tcp_server_socket.bind (( ' ' , 9090 ) )
# 3. Überwachung einrichten
# 128: Gibt die maximale Anzahl wartender Verbindungen an
tcp_server_socket.listen ( 128 ) _ _
# 4. Auf die Verbindungsanfrage des Clients warten
#Bei jeder erfolgreichen Verbindung zwischen Client und Server wird ein neuer Socket zurückgegeben
while True :
new_client , ip_port = tcp_server_socket.accept ( ) _
sub_thresd = threading . Thread ( target = handle , args = ( ip_port , new_client ))
sub_thresd.start ( ) _
# 7. Den Socket schließen
tcp_server_socket.close ( ) _
Urheberrechtshinweis: Der Inhalt dieses Artikels wurde von实名 registrierten Benutzern der Alibaba Cloud eingereicht. Das Urheberrecht liegt beim ursprünglichen Autor. Die Alibaba Cloud Developer Community besitzt kein Urheberrecht und übernimmt keine entsprechende rechtliche Verantwortung. Für detaillierte Regelungen lesen Sie bitte die „Nutzungsvereinbarung der Alibaba Cloud Developer Community“ und die „Richtlinien zum Schutz geistigen Eigentums der Alibaba Cloud Developer Community“. Wenn Sie Inhalte finden, bei denen Plagiatsverdacht besteht, füllen Sie bitte das Beschwerdeformular für Urheberrechtsverletzungen aus. Nach Überprüfung wird die Community die angeblich rechtsverletzenden Inhalte umgehend löschen.
Verwandte Artikel
-
6 optionale Technologien für die Datenspeicherung
Wissensdatenbank-Team
Weitere Sonderangebote entdecken
-
Kurznachrichtendienst (SMS) und E-Mail-Dienst
50,000 email package starts as low as USD 1.99, 120 short messages start at only USD 1.00
