Untitled
unknown
python
a year ago
3.1 kB
10
Indexable
import socket
import sys
def run_server(port):
# Create a TCP socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
# Bind the socket to the port
server_socket.bind(('', port))
# Listen for incoming connections
server_socket.listen(1)
print(f"Server listening on port {port}")
while True:
# Accept a connection
client_socket, client_address = server_socket.accept()
print(f"Connection from {client_address}")
try:
while True:
# Receive data from the client
data = client_socket.recv(1024).decode('utf-8')
if not data:
break
print(f"Received: {data}")
# Check for close command
if data.strip().lower() == "close":
print("Close command received. Shutting down...")
return
except Exception as e:
print(f"Error handling client: {e}")
finally:
client_socket.close()
except Exception as e:
print(f"Server error: {e}")
finally:
server_socket.close()
def run_client(host, port):
# Create a TCP socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
# Connect to the server
client_socket.connect((host, port))
print(f"Connected to {host}:{port}")
while True:
# Get input from user
message = input("Enter message (type 'close' to quit): ")
# Send the message
client_socket.send(message.encode('utf-8'))
# Check for close command
if message.strip().lower() == "close":
print("Closing connection...")
break
except Exception as e:
print(f"Client error: {e}")
finally:
client_socket.close()
def main():
# Get mode from user
while True:
mode = input("Enter mode (server/client): ").lower()
if mode in ['server', 'client']:
break
print("Invalid mode. Please enter 'server' or 'client'")
if mode == 'server':
if len(sys.argv) != 2:
port = int(input("Enter port number: "))
else:
port = int(sys.argv[1])
run_server(port)
else:
if len(sys.argv) != 3:
host = input("Enter host address: ")
port = int(input("Enter port number: "))
else:
host = sys.argv[1]
port = int(sys.argv[2])
run_client(host, port)
if __name__ == "__main__":
try:
main()
except ValueError:
print("Port must be a number")
sys.exit(1)
except KeyboardInterrupt:
print("\nProgram terminated by user")
sys.exit(0)Editor is loading...
Leave a Comment