Computer >> Máy Tính >  >> Lập trình >> Python

Phòng trò chuyện đơn giản sử dụng Python

Trong bài viết này, chúng ta sẽ xem cách tạo hệ thống phòng trò chuyện máy chủ và máy khách bằng Lập trình Socket với Python.

Các ổ cắm là điểm cuối của bất kỳ kênh giao tiếp nào. Chúng được sử dụng để kết nối máy chủ và máy khách. Các ổ cắm là hai hướng. Trong khu vực này, chúng tôi sẽ thiết lập các ổ cắm cho mỗi đầu và thiết lập hệ thống phòng trò chuyện giữa các máy khách khác nhau thông qua máy chủ. Phía máy chủ có một số cổng để kết nối với các ổ cắm của máy khách. Khi khách hàng cố gắng kết nối với cùng một cổng, kết nối sẽ được thiết lập cho phòng trò chuyện.

Về cơ bản có hai phần. Phía máy chủ và phía máy khách. Khi tập lệnh phía máy chủ đang chạy, nó sẽ đợi bất kỳ yêu cầu kết nối nào đang hoạt động. Khi một kết nối được thiết lập, nó có thể giao tiếp với nó.

Trong trường hợp này, chúng tôi đang sử dụng localhost. Nếu các máy được kết nối qua mạng LAN thì chúng ta có thể sử dụng địa chỉ IP để giao tiếp. Máy chủ sẽ hiển thị IP của nó và yêu cầu đặt tên cho máy chủ. Từ phía máy khách, chúng ta phải đề cập đến tên và cũng là địa chỉ IP của máy chủ để kết nối.

Mã phía máy chủ

import time, socket, sys
print('Setup Server...')
time.sleep(1)
#Get the hostname, IP Address from socket and set Port
soc = socket.socket()
host_name = socket.gethostname()
ip = socket.gethostbyname(host_name)
port = 1234
soc.bind((host_name, port))
print(host_name, '({})'.format(ip))
name = input('Enter name: ')
soc.listen(1) #Try to locate using socket
print('Waiting for incoming connections...')
connection, addr = soc.accept()
print("Received connection from ", addr[0], "(", addr[1], ")\n")
print('Connection Established. Connected From: {}, ({})'.format(addr[0], addr[0]))
#get a connection from client side
client_name = connection.recv(1024)
client_name = client_name.decode()
print(client_name + ' has connected.')
print('Press [bye] to leave the chat room')
connection.send(name.encode())
whileTrue:
message = input('Me > ')
if message == '[bye]':
message = 'Good Night...'
connection.send(message.encode())
print("\n")
break
connection.send(message.encode())
message = connection.recv(1024)
message = message.decode()
print(client_name, '>', message)

Mã phía máy khách

import time, socket, sys
print('Client Server...')
time.sleep(1)
#Get the hostname, IP Address from socket and set Port
soc = socket.socket()
shost = socket.gethostname()
ip = socket.gethostbyname(shost)
#get information to connect with the server
print(shost, '({})'.format(ip))
server_host = input('Enter server\'s IP address:')
name = input('Enter Client\'s name: ')
port = 1234
print('Trying to connect to the server: {}, ({})'.format(server_host, port))
time.sleep(1)
soc.connect((server_host, port))
print("Connected...\n")
soc.send(name.encode())
server_name = soc.recv(1024)
server_name = server_name.decode()
print('{} has joined...'.format(server_name))
print('Enter [bye] to exit.')
whileTrue:
message = soc.recv(1024)
message = message.decode()
print(server_name, ">", message)
message = input(str("Me > "))
if message == "[bye]":
message = "Leaving the Chat room"
soc.send(message.encode())
print("\n")
break
soc.send(message.encode())