Форум программистов, компьютерный форум, киберфорум
Python: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/34: Рейтинг темы: голосов - 34, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 11.11.2018
Сообщений: 3

Построение клиент-серверного приложения

05.06.2019, 10:14. Показов 6499. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Разработать клиент-серверное приложение, позволяющее решить задачу варианта. Коммуникацию между клиентом и сервером осуществлять через сокет.

1. На запрос клиента сервер возвращает текущую дату и время

Пример:

Входные данные Выходные данные

“date time” 01.12.2019 21:34:15

2. Сервер принимает от клиента значения переменных, необходимые для решения уравнения своего варианта 1 задания лабораторной работы №1, в порядке вхождения в уравнение и возвращает результат вычислений или сообщение об ошибке деления на 0.

Например, для 1 варианта |(a2/b2 + c2*a2)/(a+b+c*(k-a/b3)) + c + (k/b -k/a)*c|

для значений а=23, b=0, c=1, k=7

Входные данные Выходные данные

“23 0 1 7” “Ошибка: деление на 0”

3. Сервер принимает от клиента матрицу размера 3х3 и возвращает вычисленный определитель.

Пример:

Входные данные Выходные данные

“[ 1 2 3; 4 5 6; 7 8 9]” “0”

4. Сервер запоминает входящее текстовое сообщение клиента и возвращает клиенту предыдущее сохраненное сообщение. На первый после запуска сервера запрос от любого клиента возвращается строка «Поступившего ранее сообщения не было»

Пример:

Входные данные Выходные данные

1-е обращение: “Hello, world!” “ Поступившего ранее сообщения не было ”

2-е обращение: “Some data to be transmitted” “ Hello, world!”

5. Сервер принимает от клиента матрицу размера 2х2 и возвращает матрицу, элементы которой увеличены в det A раз.

Пример:

Входные данные Выходные данные

“[ 1 2; 3 4 ]” “[ -2 -4; -6 -8]”
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.06.2019, 10:14
Ответы с готовыми решениями:

Выбор фреймворка для клиент-серверного приложения
Доброго времени суток. Товарищи программисты, вопрос в выборе средств для реализации сервера. Не знаю, что лучше подойдет, поэтому...

Разработайте программного бота, работающего но принципу клиент-серверного взаимодействия
Доброе утро! Помогите, пожалуйста с задачей. Будет здорово, если всё будет написано без усложнений. Разработайте программного бота,...

Архитектура клиент-серверного приложения
Доброго времени суток. Стоит задача - разработать 4 не больших приложения, из них 3 клиента и 1 сервер. Задача сервера: 1. слушать...

6
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
05.06.2019, 12:29
http://lmgtfy.com/?q=python+si... pplication
1
Эксперт Pascal/Delphi
 Аватар для mmm_corp
103 / 91 / 32
Регистрация: 30.05.2015
Сообщений: 594
05.06.2019, 12:39
советом тут помогут, но вместо вас делать лабы - никому не интересно, что конкретно не получается?
0
0 / 0 / 0
Регистрация: 11.11.2018
Сообщений: 3
05.06.2019, 14:30  [ТС]
Прошу прощения, не была озвучена проблема...Вопрос заключался в осуществлении коммуникации между клиентом и сервером через сокет. Можно ли объяснить простым языком, каким образом это сделать?
0
 Аватар для Semen-Semenich
5224 / 3471 / 1173
Регистрация: 21.03.2016
Сообщений: 8,298
05.06.2019, 14:46
а почитать литературу?
Сетевое программирование
Сокеты в Python 3: TCP, клиент, серве
думаете вам тут строк так 300 кто то писать будет? читайте пробуйте, будут ошибки и проблемы так код в студию с ошибками и вам в качестве приза обязательно помогут
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
05.06.2019, 14:49
Вы хоть одну из статей из поисковой выдачи прочитали?
0
 Аватар для __ALPHA__
302 / 160 / 87
Регистрация: 16.04.2018
Сообщений: 239
05.06.2019, 18:25
Лучший ответ Сообщение было отмечено studentconf как решение

Решение

Сервер:
Кликните здесь для просмотра всего текста
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import time
import socket
import threading
 
IP = '127.0.0.1'
PORT = 1005
backlog = 50
buffersize = 65535
 
s = socket.socket()
s.bind((IP, PORT))
s.listen(backlog)
print("Порт " + str(PORT) + " прослушивается...")
 
def new_connect(sock, addr):
    def send(pckData):
        sock.send(bytearray(pckData, 'utf-8'))
        
    last_message = chr(0)
    try:
        while True:
            data = sock.recv(buffersize).decode("utf-8") # получаем данные
            if data == '': break
 
            pckType = ord(data[0]) # первый байт - тип сетевого пакета
 
            if pckType == 0:    # 00 - возвратить дату и время
                t = time.strftime("%d.%m.%Y %H:%M:%S")
                send(t)
                print(addr[0] + " возвратить дату и время")
            elif pckType == 1:  # 01 - решить уравнение
                a, b, c, k = map(int, data[1:].split(chr(0))) # коэффициенты разделены chr(0)
                try:
                    f = abs((a**a/b**b + c**2/a**2)/(a+b+c*(k-a/b**3)) + c + (k/b - k/a)*c) # формула уравнения
                    send(str(f))
                except ZeroDivisionError: # исключение деление на ноль
                    send("ZeroDivisionError")
                print(addr[0] + " решить уравнение")
            elif pckType == 2:  # 02 - вычислить определитель матрицы 3x3
                a11, a12, a13, a21, a22, a23, a31, a32, a33 = map(int, data[1:].split(chr(0))) # коэффициенты матрицы разделены chr(0)
                detA = a11*a22*a33 + a12*a23*a31 + a13*a21*a32 - a13*a22*a31 - a12*a21*a33 - a11*a23*a32
                send(str(detA))
                print(addr[0] + " вычислить определитель матрицы 3x3")
            elif pckType == 3:  # 03 - передать последнее текстовое сообщение
                send(last_message) # если сообщение первое, передается chr(0)
                last_message = data[1:]
            elif pckType == 4:  # 04 - возвратить матрицу 2x2 элементы которой увеличены в detA раз
                A = list(map(int, data[1:].split(chr(0)))) # коэффициенты матрицы разделены chr(0)
                detA = A[0]*A[3] - A[1]*A[2]
                A = list(map(lambda item: item*detA, A))
                resultA = chr(0).join(map(str, A)) # возвращаемые коэффициенты матрицы 2x2 разделены chr(0)
                send(resultA)
      
        sock.close()
        print("Соединение " + addr[0] + " закрыто")
        
    except Exception as e:
        sock.close()
        print(e)
        print(addr[0] + " исключение")
        print("Соединение " + addr[0] + " закрыто")
        
while True:
    sock, addr = s.accept()
    print("Новое соединение от " + addr[0])
 
    threading.Thread(target=new_connect, args=(sock, addr, )).start() # создаем новый поток


Клиент:
Кликните здесь для просмотра всего текста
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import socket
 
IP = '127.0.0.1'
PORT = 1005
buffersize = 65535
 
s = socket.socket()
s.connect((IP, PORT))
print("Соединение с сервером " + IP + ":" + str(PORT) + " установлено.\n")
 
while True:
    print("Команды:")
    print("0 Получить дату и время")
    print("1 Решить уравнение")
    print("2 Вычислить определитель матрицы 3x3")
    print("3 Передать последнее текстовое сообщение")
    print("4 Возвратить матрицу 2x2 элементы которой увеличены в detA раз")
    print("5 Выход")
    
    pckType = int(input("> "))
 
    if pckType == 5:
        break
 
    if pckType == 0:
        pckSend = chr(pckType)
        s.send(bytearray(pckSend, 'utf-8'))
        pckRecv = s.recv(buffersize).decode("utf-8")
        print(pckRecv)
    elif pckType == 1:
        data = input("Введите a,b,c,k через пробел: ").replace(" ", chr(0))
        pckSend = chr(pckType) + data
        s.send(bytearray(pckSend, 'utf-8'))
        pckRecv = s.recv(buffersize).decode("utf-8")
        if pckRecv == "ZeroDivisionError":
            print("Ошибка: деление на 0")
        else:
            print(pckRecv)
    elif pckType == 2:
        data = input("Введите a11,a12,a13,a21,... через пробел: ").replace(" ", chr(0))
        pckSend = chr(pckType) + data
        s.send(bytearray(pckSend, 'utf-8'))
        pckRecv = s.recv(buffersize).decode("utf-8")
        print(pckRecv)
    elif pckType == 3:
        data = input("Введите сообщение: ")
        pckSend = chr(pckType) + data
        s.send(bytearray(pckSend, 'utf-8'))
        pckRecv = s.recv(buffersize).decode("utf-8")
        if pckRecv == chr(0):
            print("Поступившего ранее сообщения не было")
        else:
            print(pckRecv)
    elif pckType == 4:
        data = input("Введите a11,a12,a21,a22 через пробел: ").replace(" ", chr(0))
        pckSend = chr(pckType) + data
        s.send(bytearray(pckSend, 'utf-8'))
        pckRecv = s.recv(buffersize).decode("utf-8")
        print(pckRecv)
 
    print()
 
s.close()
print("Соединение закрыто.")
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.06.2019, 18:25
Помогаю со студенческими работами здесь

Сборка клиент-серверного приложения
Доброго времени суток. Столкнулся с немного неадекватным требованием фирмы и прошу помочь с решением. Задача была написать...

Пример клиент-серверного приложения
Может у кого есть пример клиент-сервера передачи текста от клиента к серверу и наоборот? на формах, поделитесь пожалуйста, буду не...

Создание клиент серверного приложения
Доброго времени суток, уважаемые гуру программирования. Надеюсь на Ваш опыт и доброту. Собственно проблема такая: нужно создать СУБД,...

Написание клиент-серверного приложения
Доброго времени дня! Передо мной встала задача разработки клиент-серверного приложения под андроид. До этого писал только дэсктоп и поэтому...

Инсталлятор клиент-серверного приложения
Здравствуйте! Есть клиент-серверное приложение которое может работать с Firebird и SQLServer Необходимо создать инсталлятор который...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru