Добавил:
больше работ здесь: https://github.com/alisadex Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
4 лаба / ОС лаба 4 часть 2.docx
Скачиваний:
4
Добавлен:
21.12.2023
Размер:
2.15 Mб
Скачать

Задание 2.2. Сокеты

Результаты выполнения представлены на рисунке 2:

Рисунок 2 – Результаты работы программы “server_socket.py” и “client_socket.py”

Текст программы “ server_socket.py ”

# import socket

# # Создаем сокет для сервера

# server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# server_socket.bind(("localhost", 12345)) # 127.0.0.1 = localhost

# server_socket.listen(1)  # Ожидание только одного клиента

# print("Ожидание подключения клиента...")

# client_socket, addr = server_socket.accept()

# print("Клиент подключен от", addr)

# while True:

#     data = client_socket.recv(1024) # Приём сообщения от клиента

#     if not data:

#         break

#     message = data.decode('utf-8') # Декодинг строки из байтовой в текстовую

#     print("Получено сообщение от клиента:", message)

# server_socket.close()

import socket

import multiprocessing

# Функция обработки входящих соединений

def handle_client(client_socket):

    while True:

        try:

            data = client_socket.recv(1024)

            if not data:

                break

           

            # Получение сообщения

            message = data.decode('utf-8')

            print("Получено сообщение от клиента:", message)

            # Подтверждение получения клиента

            confirmation_message = "Сообщение получено: " + message

            client_socket.send(confirmation_message.encode('utf-8'))

        except ConnectionResetError:

            break

    client_socket.close()

if __name__ == "__main__":

    # Создаем сокет для сервера

    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    server_socket.bind(("localhost", 12345)) # 127.0.0.1 = localhost

    server_socket.listen(2)  # Ожидание двух клиентов

    while True:

        print("Ожидание подключений...")

        client_socket, addr = server_socket.accept()

        print("Клиент подключен от", addr)

        # Создаем новый процесс для обработки клиента

        client_process = multiprocessing.Process(target=handle_client, args=(client_socket,))

        client_process.start()

Текст программы “ client_socket.py ”

# import socket

# # Создаем сокет для клиента

# client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# # Подключаемся к серверу

# client_socket.connect(("localhost", 12345)) # 127.0.0.1 = localhost

# while True:

#     message = input("Введите сообщение: ")

#     if message == 'exit':

#             break

#     client_socket.send(message.encode('utf-8'))

import socket

if __name__ == "__main__":

    # Создаем сокет для клиента

    client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    client_socket.connect(("localhost", 12345)) # 127.0.0.1 = localhost

    while True:

        message = input("Введите сообщение (или 'exit' для завершения): ")

        if message == 'exit':

            break

        client_socket.send(message.encode('utf-8'))

       

        # Подтверждение получения сообщения сервером

        confirmation_message = client_socket.recv(1024)

        response = confirmation_message.decode('utf-8')

        print("От сервера получено уведомление:", response)

Соседние файлы в папке 4 лаба