Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
gen1321
0 / 0 / 0
Регистрация: 05.07.2012
Сообщений: 8
#1

Вывод ответа сервера - C++

09.07.2012, 20:48. Просмотров 453. Ответов 0
Метки нет (Все метки)

собственно сабаж. как выевести ответ сервера? думаю что через функцию recv, но проблема в том что я ничего не понимаю) и взял вотэтот пример для разбора. и ешё правельно ли я реализовал запрос к серверу?


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
#include "StdAfx.h"
#pragma comment(lib, "ws2_32")
#include <stdio.h>
#include <string.h>
#include <winsock2.h>
#include <windows.h>
 
#define PORT 80
#define SERVERADDR "94.100.191.201"
 
int main(int argc, char* argv[])
{
    char buff[1024];
    char get[1024]="GET / HTTP/1.1";
    
    printf("TCP DEMO CLIENT\n");
 
    // Шаг 1 - инициализация библиотеки Winsock
    if (WSAStartup(0x202, (WSADATA *)&buff[0]))
    {
        printf("WSAStart error %d\n", WSAGetLastError());
        return -1;
    }
 
    // Шаг 2 - создание сокета
    SOCKET my_sock;
    my_sock = socket(AF_INET, SOCK_STREAM, 0);
    if (my_sock < 0)
    {
        printf("Socket() error %d\n", WSAGetLastError());
        return -1;
    }
 
    // Шаг 3 - установка соединения
    // заполнение структуры sockaddr_in - указание адреса и порта сервера
    sockaddr_in dest_addr;
    dest_addr.sin_family = AF_INET;
    dest_addr.sin_port = htons(PORT);
    HOSTENT *hst;
 
    // преобразование IP адреса из символьного в сетевой формат
    if (inet_addr(SERVERADDR) != INADDR_NONE)
        dest_addr.sin_addr.s_addr = inet_addr(SERVERADDR);
    else
    {
        // попытка получить IP адрес по доменному имени сервера
        if (hst = gethostbyname(SERVERADDR))
            // hst->h_addr_list содержит не массив адресов,
            // а массив указателей на адреса
            ((unsigned long *)&dest_addr.sin_addr)[0] =
            ((unsigned long **)hst->h_addr_list)[0][0];
        else
        {
            printf("Invalid address %s\n", SERVERADDR);
            closesocket(my_sock);
            WSACleanup();
            return -1;
        }
    }
 
    // адрес сервера получен - пытаемся установить соединение
    if (connect(my_sock, (sockaddr *)&dest_addr, sizeof(dest_addr)))
    {
        printf("Connect error %d\n", WSAGetLastError());
        return -1;
    }
 
    printf("Susckseess\n \
            Type quit for quit\n\n", SERVERADDR);
 
    // Шаг 4 - чтение и передача сообщений
    int nsize;
    while ((nsize = recv(my_sock, &get[0], sizeof(buff) - 1, 0)) != SOCKET_ERROR)
    {
        // ставим завершающий ноль в конце строки
        get[nsize] = 0;
 
        // выводим на экран
        printf("S=>C:%s", get);
 
        // читаем пользовательский ввод с клавиатуры
        //printf("S<=C:"); fgets(&buff[0], sizeof(buff) - 1, stdin);
 
        // проверка на "quit"
        if (!strcmp(&buff[0], "quit\n"))
        {
            // Корректный выход
            printf("Exit...");
            closesocket(my_sock);
            WSACleanup();
            return 0;
        }
 
        // передаем строку клиента серверу
        send(my_sock, &get[0], strlen(&get[0]), 0);
        recv(
    }
    printf("Recv error %d\n", WSAGetLastError());
    closesocket(my_sock);
    WSACleanup();
    return -1;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.07.2012, 20:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывод ответа сервера (C++):

Неправильный вывод ответа - C++
написал программу, в y при вводе люього числа записывается какая-то непонятина. Помогите разобратться в чем дело? #include &lt;stdio.h&gt; ...

Не получается сделать рандомный вывод ответа в классе "Предсказатель" - C++
Нужно разработать класс предсказатель. Обязательные методы : - Заполнение перечня ответов (да, нет, не знаю и т.д.) - Ответ (выдает...

Знатоки прошу ответа!!! - C++
1. double temp; for (int i = p + 1; i &lt; n; i++) { temp = arr; for (int j = 0; j &lt; n + 1; j++) arr -= arr * temp; } 2. ...

Запись ответа в файл - C++
Срочно, народ) Нужна прога, которая будет сначала выводить вопрос, потом варианты ответа &quot;ДА\НЕТ&quot;, при вводе &quot;ДА&quot; ответ записывается в...

Ошибка в выводе ответа - C++
int main(int argc, char *argv) { setlocale(0, &quot;RUS&quot;); int a, b, c, result; printf(&quot;Введите a: &quot;); scanf(&quot;%d&quot;, &amp;a); ...

Сомневаюсь в правильности ответа - C++
У меня вот что получилось int n; float sum = 0;float x; x = 10; for(n = 1;n &lt;= 10;n++); { sum = (n+1)/pow(x,n); } ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.07.2012, 20:48
Привет! Вот еще темы с ответами:

о,великие программисты!не оставьте без ответа! - C++
найти все натуральные числа,не превосходящие заданного n,десятичная запись которых есть строго возрастающая или строго убывающая...

Как вывести случайный вариант ответа - C++
Есть четыре варианта A, B, C, D, которые используются в качестве ответа на вопрос. Нужно вывести в консоль: один правильный вариант...

Наибольшая общая подпоследовательность с восстановлением ответа - C++
Даны две последовательности, требуется найти и вывести их наибольшую общую подпоследовательность. Формат входных данных В первой...

Округление ответа и переход в разные части в C++ - C++
Меня интересует несколько вопросов. 1) Если вбить значение X и Y одновременно 3, либо одновременно -3, то при выводе числа Z(1)...


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

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

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