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

Получение сервером данных от cURL HTTP/POST из терминала

25.04.2018, 23:31. Показов 864. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В кратце суть такая вот есть мой сервачок в него я отправляю через терминал вот такого содержания cURL: curl --data "filename=test" http://localhost:5000 и получаю от прослушивания тело собственно POST запроса, а вот тело сообщение немного не улавливаю каким образом я могу получить??? и как быть к примеру если хочу передать не просто строку, а сам файл??

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
#include <stdio.h>
 
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <time.h>
 
int main()
{
    printf("%s\n","Welcome to this server");
 
    int         listenfd = 0;
    int         connfd = 0;
    struct sockaddr_in serv_addr;
 
    char sendBuff[1024];
 
    listenfd = socket(AF_INET, SOCK_STREAM, 0);
    memset(&serv_addr, '0', sizeof(serv_addr));
    memset(sendBuff, '0', sizeof(sendBuff));
 
    serv_addr.sin_family = AF_INET;
    serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
    serv_addr.sin_port = htons(5000);
 
    bind(listenfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr));
 
    listen(listenfd, 10);
 
    int n=0;
    char recvBuff[1024];
    char* result;
    while(1)
    {
        connfd = accept(listenfd, (struct sockaddr*)NULL, NULL);
 
        if( (n = read(connfd, recvBuff, sizeof(recvBuff)-1)) > 0)
        {
            result = recvBuff;
            recvBuff[n] = 0;
            if(fputs(recvBuff, stdout) == EOF)
            {
                printf("\n Error : Fputs error\n");
            }
        }
 
        close(connfd);
        sleep(1);
    }
 
    return 0;
}
Вот что выдаёт терминал после того как я повторяю запрос дважды, то есть во второй раз всплывает переданная строка, но как её в коде отсечь сразу я чот недопонимаю, объясните или киньте на нужную литературу, будьте добры))
Код
POST / HTTP/1.1
Host: localhost:5000
User-Agent: curl/7.47.0
Accept: */*
Content-Length: 13
Content-Type: application/x-www-form-urlencoded

filename=testPOST / HTTP/1.1
Host: localhost:5000
User-Agent: curl/7.47.0
Accept: */*
Content-Length: 13
Content-Type: application/x-www-form-urlencoded
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.04.2018, 23:31
Ответы с готовыми решениями:

Curl http post request + кириллица
Здравствуйте, нужно написать программу для перевода текста. Использовать буду яндекс апи. С помощью...

Получение данных сервером от БД и отображение данных в клиенте DataGridView
Подскажите пожалуйста, как в C# полученные данные сервером из Базы данных(sqlite) передать клиенту...

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

$http.post передача данных с сервера
При передаче файла .json выдаёт такую ошибку XMLHttpRequest cannot load http://путь у .json...

1
69 / 62 / 13
Регистрация: 10.01.2012
Сообщений: 508
27.04.2018, 23:35 2
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
int get_file(char *chat_user, char *file_path_and_name) // or DOWNLOAD_FILE_DIR /file_name
{
            char *file = malloc(strsize("%s/%s", file_path_and_nane));
            sprintf(file, "%s/%s", file_path_and_name);// or sprintf(file, "%s/%s", DOWNLOAD_FILE_DIR, file_name);
            char *buf;
            unsigned long lenz;
            lenz = binary_read(file, buf);
            debug("lenz=%lu", lenz);
            if (lenz > 0)
            {
        send_binary(chat_user, buf);
        free(file);
        }
}
 
int binary_read(char *name, char *buffer)
{
    FILE *file;
    //char *buffer;
    unsigned long fileLen;
 
    //Open file
    file = fopen(name, "rb");
    if (!file)
    {
        fprintf(stderr, "Unable to open file %s", name);
        return -1;
    }
    
    //Get file length
    fseek(file, 0, SEEK_END);
    fileLen=ftell(file);
    fseek(file, 0, SEEK_SET);
 
    //Allocate memory
    buffer=(char *)malloc(fileLen+1);
    if (!buffer)
    {
        fprintf(stderr, "Memory error!");
                                fclose(file);
        return(-1);
    }
 
    //Read file contents into buffer
    int inbuf = fread(buffer, fileLen, 1, file);
    fclose(file);
 
    //Do what ever with buffer
 
 
    return (inbuf);
}
0
27.04.2018, 23:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.04.2018, 23:35
Помогаю со студенческими работами здесь

Получение данных по HTTP
Не знаком с получением данных по HTTP из procedure. Расскажите вкрации или дайте ссылку где...

HTTP запрос методом post и передача данных
Здравствуйте уважаемые программисты! Я написал программу на с++, которая отправляет http запросы...

Получение данных времени с http://time100.ru
Здравствуйте Нужна помощь в получении времени с разных городов имеется код &lt;span...

Посылка данных на чужой сервер через http post - проблема
Привет! Есть вот такой код: URL url = new URL(hostString); HttpURLConnection urlConnector =...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru