Форум программистов, компьютерный форум, киберфорум
C++: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
 Аватар для Cerega2127
0 / 0 / 0
Регистрация: 24.09.2016
Сообщений: 21

Как правильно реализовать ввод и вывод по фамилии?

27.10.2016, 18:30. Показов 1095. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
На сервере хранится список книг, хранящихся в библиотеке. Каждая запись списка содержит следующую
информацию о книгах: регистрационный номер книги; автор; название; год издания; издательство; количество страниц.
Таких записей должно быть не менее пяти. Клиент посылает на сервер фамилию интересующего его автора.

C++
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include <WinSock2.h>
int age(char a[])
{
    int rez,x=0,f;
    char buf6[100];
    for (int i = 0; i < strlen(a); i++)
    {
        if (a[i]==',')
        {
            x++;
        }
        if (a[i]==',' && x==2)
        {
            f = i;
            break;
        }
    }
    for (int i = 0; i < 2; i++)
    {
        buf6[i] = a[f+i+1];
    }
    rez = atoi(buf6);
    return rez;
}
DWORD WINAPI ThreadFunc(LPVOID client_socket)
{
    SOCKET s2 = ((SOCKET *)client_socket)[0];
    char buf[100],Res[255];
    int k[5];
char buf1[] = {"#1, Sergeev Sergei Sergeevich, year 2012, publishing 10, pages 10"};
char buf2[] = {"#2, Ivanov Ivan Ivanovich, year 2013, publishing 20, pages 10"};
char buf3[] = {"#3, Vladimirov Vladimir Vladimirovich, year 2014, publishing 30, pages 10"};
char buf4[] = {"#4, Sidorov Sidor Sidorovich, year 2015,  publishing 40, pages 10"};
char buf5[] = {"#5, Vasilev Vasilii Vasilievich, year 2016, publishing 50, pages 10"};
    while (recv(s2,buf,sizeof(buf),0))
    {
        k[0] = age(buf1);
        k[1] = age(buf2);
        k[2] = age(buf3);
        k[3] = age(buf4);
        k[4] = age(buf5);
        int z = k[0];
        for (int i = 0; i < 5; i++)
        {
            if (k[i]<z)
            {
                z = k[i];
            }
        }
        if (k[0] == z)
        {
            strcpy(Res,buf1);
        }
        if (k[1] == z)
        {
            strcpy(Res,buf2);
        }
        if (k[2] == z)
        {
            strcpy(Res,buf3);
        }
        if (k[3] == z)
        {
            strcpy(Res,buf4);
        }
        if (k[4] == z)
        {
            strcpy(Res,buf5);
        }
        send(s2,Res,strlen(Res),0);
    }
    closesocket(s2);
    return 0;
}
 
int numcl = 0;
void print()
{
    if(numcl) printf("%d client connected\n",numcl);
    else printf("No clients connected\n");
}
 
void main()
{
    setlocale(LC_ALL,"RUS");
    WORD wVersionRequested;
    WSADATA wsaData;
    int err;
    wVersionRequested = MAKEWORD(2,2);
    err = WSAStartup(wVersionRequested,&wsaData);
    if (err!=0)
    {
        return;
    }
    SOCKET s = socket(AF_INET,SOCK_STREAM,0);
    sockaddr_in local_addr;
    local_addr.sin_family = AF_INET;
    local_addr.sin_port = htons(1280);
    local_addr.sin_addr.s_addr = 0;
    bind(s,(sockaddr*)&local_addr,sizeof(local_addr));
    int c = listen(s,5);
    std::cout<<"Server receive ready\n";
    SOCKET client_socket;
    sockaddr_in client_addr;
    int client_addr_size = sizeof(client_addr);
    while ((client_socket = accept(s,(sockaddr*)&client_addr,&client_addr_size)))
    {
        numcl++;
        print();
        DWORD thID;
        CreateThread(NULL,NULL,ThreadFunc,&client_socket,NULL,&thID);
    }
 
}
Добавлено через 18 минут
клиент
C++
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
// ConsoleApplication2.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include <WinSock2.h>
#pragma comment (lib, "ws2_32.lib")
 
void main()
{   
    system ("color f0");
    SetConsoleOutputCP(1251);
    SetConsoleCP(1251);
    WORD wVersionRequested;
    WSADATA wsaData;
    int err;
    wVersionRequested = MAKEWORD(2,2);
    err = WSAStartup(wVersionRequested,&wsaData);
    if (err!=0)
    {
        return;
    }
    while(true)
    {
        SOCKET s = socket(AF_INET,SOCK_STREAM,0);
        sockaddr_in dest_addr;
        dest_addr.sin_family = AF_INET;
        dest_addr.sin_port = htons(1280);
        dest_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
        connect(s,(sockaddr*)&dest_addr,sizeof(dest_addr));
        char buf[100],Res[255];
        std::cout<<"Please please enter the last name to query:  \n";
        fgets(buf,sizeof(buf),stdin);
        send(s,buf,100,0);
        
        if(recv(s,Res,sizeof(Res),0)!=0)
        {SetConsoleOutputCP(1251);
            for (int i = 0; i < strlen(Res); i++)
            {
                if (Res[i]=='@')break;
                if (Res[i]==' ')
                {
                    std::cout<<"\n";
                }
            }
            std::cout<<"\n";
        }
        closesocket(s);
    }
    WSACleanup();
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.10.2016, 18:30
Ответы с готовыми решениями:

Как правильно реализовать ввод-вывод данных через форму
задание: В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1) максимальный элемент массива; 2) сумму элементов...

Как правильно организовать файловый ввод/вывод?
setlocale(LC_ALL,&quot;russian&quot;); double x; ifstream fin; fin.open(&quot;input.txt&quot;); fin&gt;&gt;tochnost&gt;&gt;x&gt;&gt;x&gt;&gt;x; ...

Как реализовать ввод/вывод комплексных чисел?
Всем привет, кто может на примере показать как можно ввести с клавиатуры вектор к примеру из шести комплексных чисел. И потом вывести его...

1
Почетный модератор
Эксперт по компьютерным сетямЭксперт Windows
 Аватар для magirus
28049 / 15785 / 983
Регистрация: 15.09.2009
Сообщений: 67,752
Записей в блоге: 78
27.10.2016, 18:32
используйте теги выделения кода [CPP]тут ваш код[/CPP]
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.10.2016, 18:32
Помогаю со студенческими работами здесь

ДНК - Как правильно организовать ввод и вывод данных
Для начала заметим,что поскольку по условию решение всегда существует,то количество букв каждого вида в первой строке равно количеству...

Как реализовать ввод/вывод текста на русском языке?
Вечер добрый, друзья. Вот только что зарегистрировался, т.к. уже нет сил бороться с одной проблемой. Перерыл весь cyberforum, но так и не...

Как реализовать ввод адреса файла и соответственно вывод
Нужно, чтобы программа спрашивала название файла, который нужно открыть, подразумеваю(1.txt), а так же куда сохранить изменения,...

Постраничный вывод+сортировка, как правильно реализовать?
Всем доброго дня! Помогите, пожалуйста, &quot;чайнику&quot; решить следующую проблему... Имеется БД из которой вытягиваются и постранично выводятся...

Ввод и вывод имени и фамилии в Label
Ребята нужна помощь, Вот есть 3 формы , на первой форме 2 Edit, 1 Button, на 2 й форме два Label и Button, на 3 форме только 2 label,...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в конфигурации КА2. Данные берутся из регистра сведений, по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru