Wie erstelle ich mithilfe der Python-Socket-Programmierung eine neue Client-Verbindung VON der Serverseite aus?Python

Python-Programme
Anonymous
 Wie erstelle ich mithilfe der Python-Socket-Programmierung eine neue Client-Verbindung VON der Serverseite aus?

Post by Anonymous »

Ich verwende Python-Socket-Programmierung, um einen simulierten VPN-Dienst zu erstellen. Ich möchte, dass es so funktioniert, dass der Server gestartet wird und dann der Benutzer-Client (Host-U) gestartet wird. Der Server sollte eine Nachricht an Host-U senden und den Benutzer auffordern, auszuwählen, mit welcher Site er eine Verbindung herstellen möchte. Sobald der Benutzer seine Auswahl getroffen hat, sollte der Server diese Informationen nutzen, eine neue Verbindung mit einem anderen aktiven Client (Host_V) öffnen und mit dem Tunneln von Daten zwischen den beiden Clients beginnen. Gibt es überhaupt eine Möglichkeit, die neue Verbindung auf der Serverseite des Prozesses zu erstellen? Alle Beispiele, die ich online gefunden habe, zeigen, dass der Server derjenige ist, der auf neue Verbindungen wartet und diese dann akzeptiert, wenn der Client Kontakt aufnimmt.
Hier ist der Code, mit dem ich als Basis arbeite. Wie kann ich dies ändern, um mein Endziel zu erreichen?

Code: Select all

# Client IP and Port configuration
HOST = '127.0.0.1'  # Server's IP address (localhost)
PORT = 65432        # Port the server is listening on# Start the client
def start_client():
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as client_socket:
client_socket.connect((HOST, PORT))  # Connect to the server

while True:
message = input("Enter your message (type 'exit' to quit): ")
if message.lower() == 'exit':
print("Closing the connection...")
break            client_socket.sendall(message.encode())  # Send the message to the server
data = client_socket.recv(1024)  # Receive the response from the server
print(f"Server response: {data.decode()}")

print("Connection terminated.")if __name__ == "__main__":
start_client()

Code: Select all

# Server IP and Port configuration
import socket
import threading

# Server IP and Port configuration
HOST = '10.9.0.7'  # Server IP (localhost)
PORT = 4433        # Port for client connections# Function to manage client connections
def handle_client(conn, addr):
print(f"Connection established with {addr}.")

while True:
try:
data = conn.recv(1024)  # Receive data from the client
if not data:
break  # Terminate the connection if no data is received
print(f"Received from {addr}: {data.decode()}")
conn.sendall(f"Server response: {data.decode()}".encode())  # Send the received data back to the client
except ConnectionResetError:
print(f"Client {addr} has disconnected.")
break
conn.close()
print(f"Connection with {addr} closed.")# Start the server
def start_server():
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as server_socket:
server_socket.bind((HOST, PORT))
server_socket.listen()
print(f"Server listening on {HOST}:{PORT}...")

while True:
conn, addr = server_socket.accept()  # Accept a client connection
thread = threading.Thread(target=handle_client, args=(conn, addr))
thread.start()  # Start a new thread for each client
print(f"Active connections: {threading.activeCount() - 1}")

if __name__ == "__main__":
start_server()

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post