Форум программистов, компьютерный форум, киберфорум
C++: Сети
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.97/30: Рейтинг темы: голосов - 30, средняя оценка - 4.97
0 / 0 / 0
Регистрация: 12.01.2013
Сообщений: 6
1

Взаимодействие клиента и сервера на основе протокола TCP/IP

12.01.2013, 03:32. Просмотров 5527. Ответов 1
Метки нет (Все метки)

Не получается переделать. совсем не понимаю как работает.
но сначала. препод ничего не объяснил, поэтому уточняю
1. Как создать проект для клиент-сервер vc++2010
я создаю проект - консольное приложение win32 обзываю его Server, потом создаю еще один проект обзываю Client, или нет? Можете описать все поэтапно как для "тупых"

2. Теперь вопрос по кодам. Есть пример задание: Осуществить взаимодействие клиента и сервера на основе протокола TCP/IP. Функционирование клиента и сервера реализовать следующим образом: клиент посылает серверу шестизначный номер билета. Определить, является ли этот билет "счастливым". "Счастливым" называется такой билет, у которого сумма первых трех цифр равна сумме последних трех.
Сервер:
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
#include "stdafx.h"
#include <winsock2.h>
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
 
#pragma comment(lib,"Wsock32.lib")
 
int main(int argc, char ** argv)
{
    std::cout << "Server is running ...";
 
    WORD wVersionRequested;
    WSADATA wsaData;
    wVersionRequested = MAKEWORD(2, 2);
    WSAStartup( wVersionRequested, &wsaData );
 
    //создаем сокет
    SOCKET s = socket(AF_INET, SOCK_STREAM, 0);
 
    struct sockaddr_in local;
    local.sin_family      = AF_INET;
    local.sin_port        = htons(1280);
    local.sin_addr.s_addr = htonl(INADDR_ANY);
    //связываем сокет с адресом
    int c = bind( s, (struct sockaddr*)&local, sizeof(local) );
 
    //помещаем сокет в состояние прослушивания
    int r = listen(s,5);
 
    while (true) {
        char buf[255], res[100], b[255], *Res;
        //структура определяет удаленный адрес,
        // с которым соединяется сокет
        sockaddr_in remote_addr;
        int size  = sizeof(remote_addr);
        //инитиялизируем соединение при запросе клиента
        SOCKET s2 = accept( s, (struct sockaddr*)&remote_addr, &size);
    
        //принимаем данные
        while ( recv( s2, b, sizeof(b), 0) != 0 ) {
            //устанавливаем результат в FALSE
            int result = 0;
            //проверяем на длину переданной строки
            if (strlen(b) == 6) {
                int first  = b[0] + b[1] + b[2];
                int second = b[3] + b[4] + b[5];
                //проверяем на эквивалентность
                if (first == second) {
                    result = 1;
                }
            }
            _itoa(result, res, 10);
            Res = new char[1];
            strcpy(Res,res);
            Res[strlen(res)]='\0';
            // Посылает данные на соединенный сокет
            send(s2,Res,sizeof(Res)-2,0);
        }
        
        closesocket(s2);
    }
 
    WSACleanup();
 
}
Клиент
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
#include "stdafx.h"
#include <winsock2.h>
#include <iostream>
#include <stdlib.h>
#pragma comment(lib,"Wsock32.lib")
 
int main(int argc, char ** argv)
{
    WORD wVersionRequested;
    WSADATA wsaData;
    wVersionRequested = MAKEWORD(2, 2);
    WSAStartup( wVersionRequested, &wsaData );
 
 
    struct sockaddr_in peer;
    peer.sin_family = AF_INET;
    peer.sin_port   = htons(1280);
    // т.к. клиент и сервер на одном компьютере, пишем адрес 127.0.0.1
    peer.sin_addr.s_addr = inet_addr("127.0.0.1");
 
    //создаем сокет
    SOCKET s = socket(AF_INET,SOCK_STREAM,0);
    //посылаем запрос на открытие соединения
    connect(s,(struct sockaddr*) &peer,sizeof(peer));
 
    char buf[255],b[255];
    std::cout << "Enter the string, please" << std::endl;
    std::cin.getline(buf, 100, '\n');
    //посылаем запрос
    send(s, buf,sizeof(buf), 0);
    //принимаем данные
    if (recv(s, b,sizeof(b), 0) != 0) {
        //Удаление ненужных символов в конце строки
        b[strlen(b)]='\0';
        std::cout << "RESULT: ";
        //проверяем ответ ( 0 - число не счастливое, либо не шестизначное, 1 - число счастливое)
        if (strcmp(b, "1") == 0 ) {
            std::cout << "the number is lucky"; 
        }
        else {
             std::cout << "the number is not lucky OR his length is not equal SIX";
        }
        std::cout << std::endl;
    }
    closesocket(s);
    WSACleanup();
 
    system("PAUSE");
    return 0;
}
мне надо изменить чтобы было: Осуществить взаимодействие клиента и сервера на основе протокола TCP/IP. Функционирование клиента и сервера реализовать следующим образом: клиент посылает два числа серверу m и n, сервер возвращает m!+n! этих чисел назад клиенту.
функцию написала
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
long double fact(int N)
{
    if(N < 0) // если пользователь ввел отрицательное число
        return 0; // возвращаем ноль
    if (N == 0) // если пользователь ввел ноль,
        return 1; // возвращаем факториал от нуля - не удивляетесь, но это 1 =)
    else // Во всех остальных случаях
        return N * fact(N - 1); // делаем рекурсию.
}
int main()
    {
        setlocale (LC_ALL, "Russian"); 
        int n, m;
        cout << "Vvedite chislo 1" << endl;
        cin >> n;
        cout << "Vvedite chislo 2" << endl;
        cin >> m;
        int factorial;
        factorial = fact(n)+fact(m);
        cout << factorial;
 
}*/
куда это всунуть, чтобы работало???? уже 5 час сижу. Извиняюсь за глупые вопросы.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.01.2013, 03:32
Ответы с готовыми решениями:

Осуществить взаимодействие клиента и сервера на основе протокола TCP/IP
Есть задача: Осуществить взаимодействие клиента и сервера на основе протокола TCP/IP....

Осуществить взаимодействие клиента и сервера на основе протокола TCP/IP
Здравствуйте! Задание такое: Осуществить взаимодействие клиента и сервера на основе протокола...

Осуществить взаимодействие клиента и сервера на основе протокола UDP
6. Осуществить взаимодействие клиента и сервера на основе протокола UDP. Функционирование клиента и...

Осуществить взаимодействие клиента и сервера на основе протокола UDP
Есть код Серверная часть #include &lt;iostream&gt; #include &lt;winsock2.h&gt; #pragma comment (lib,...

1
Модератор
3319 / 2106 / 337
Регистрация: 13.01.2012
Сообщений: 8,179
12.01.2013, 12:56 2
ввод и вывод результата всунуть в клиент
расчет всунуть в сервер
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.01.2013, 12:56

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Ошибка в коде взаимодействия клиента и сервера на основе протокола TCP/IP (ошибка в коде)
Задание: Осуществить взаимодействие клиента и сервера на основе протокола TCP/IP. Реализовать...

Подскажите самый простой пример TCP клиента и TCP сервера
Подскажите пример самого простого TCP клиента и TCP сервера.

Как изменить IP DNS-сервера в окне свойства протокола (TCP/IPv4)?
Здравствуйте уважаемые форумчане. Подскажите пожалуйста как программно в окне свойства протокола...

Узнать название api\ протокола\ способа\ метода общения клиента и сервера
Нужно узнать название api\протокола\способа\метода общения клиента и сервера. Есть одно приложение...

Взаимодействие клиента и сервера
клиент-серверные приложения пишу впервые. собсно на данный момент планирую общать клиент и сервер...

Взаимодействие клиента и сервера
Осуществить взаимодействие клиента и сервера на основе протокола TCP/IP. Функционирование клиента и...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.