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

Сокеты: после вызова send программа зависает на функции recv - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Запуск командной строки VS из конкретного каталога http://www.cyberforum.ru/cpp-beginners/thread1246995.html
Подскажите плиз, как запустить командную строку Visual Studio Command Promt (vsvars32.bat) из необходимого каталога, так как надоело постоянно использовать инструкцию cd.. для возврата из корневого каталога этого bat-файла. Я так понимаю, надо создать bat.файл и как-то указать путь, но все мои попытки завершились безуспешно.
C++ Json c++ send end write - существует ли готовая библиотека Здрасте, нужна такая штука которая бы умела посылать json обьекты методом post на кукую-нить страницу и получать оттуда json обьект в виде std::string т.е. у нас есть какой-нить string std::string pal = "{\"planet\":\"Tirella\"}" Мы его отправляем методом post на страницу localhost/core.php Там че-то обработать и вернуть ответ ввиде json//эт я и сам могу сделать std::string otvet =... http://www.cyberforum.ru/cpp-beginners/thread1246988.html
В дочерних классах компилятор сообщает об Undefined reference to pure virtual functions C++
Здравствуйте! Имеется базовый класс с чисто виртуальным деструктором (virtual ~Service() = 0). Однако в дочерних классах мне компилятор сообщает об undefined reference to ...::~Service(). Service (шаблон) целиком объявлен и реализован в hpp файле. Как это понимать?
Cannot convert from 'wchar_t' to 'const wchar_t *' C++
такой код, порылся в инете не помогло. ломать голову надоело может кто подскажет, буду благодарен. wchar_t * english = L"abvgdee ziyklmnoprstuf 'e " ; wchar_t TranslatedWord ; wcscat(TranslatedWord,english ) ;
C++ Нужен пример рекурсивной функции для понимания ее назначения и практической пользы http://www.cyberforum.ru/cpp-beginners/thread1246960.html
Не могу понять пользу рекурсии, может ли кто привести код в пример.
C++ Заменить все элементы, меньшие заданного числа, этим числом Использование функций-шаблонов: для работы с двумерными массивами арифметических типов данных разработать шаблоны ввода и вывода массива, а также шаблон для решения основной задачи:Заменить все элементы, меньшие заданного числа, этим числом. #include "iostream" #include "conio.h" using namespace std; template < typename Х> подробнее

Показать сообщение отдельно
mh-coder
24 / 23 / 2
Регистрация: 01.02.2014
Сообщений: 717
30.08.2014, 15:08  [ТС]     Сокеты: после вызова send программа зависает на функции recv
Цитата Сообщение от aLarman Посмотреть сообщение
1ый вариант, знать это априори
2) в конце последовательности иметь уникальную посл.байт, что бы понять что все пришло Добавлено через 33 секунды
3) в передаваемой посл.байт отвести байт задающий длину последовательности
чесно говоря я ни слова не понял из написаного, а можно написать более понятны языком?

Добавлено через 2 часа 47 минут
Вобщем вот что в конце получилось, но серовно идеально неработает, код отрабатывает, но браузер всегда подвисает на том что должно было грузится последним и несмотря на то что код уже отработал - браузер черовно ждёт ответа, хелп, неужели тут никто сокеты не знает, я не верю

C++ (Qt)
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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
// Mysock2.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include "Header.h"
#include "Server.h"
 
DWORD WINAPI Thread( LPVOID );
 
struct info{
    char data[1024*64];
    Client C;
};
 
 
 
int _tmain(int argc, _TCHAR* argv[])
{
 
 
 
    Array ex;
    string url;
    char data[10240] = {NULL};
 
    Client c2;
    Client c;
    Server b;
    b.LoadWinsoсk();
    b.CreateSocket();
 
 
 
 
    c.CreateSocket();
 
 
 
 
    b.Bind("127.0.0.1",2222,SOMAXCONN);
    b.Listen();
 
    info send;
 
 
    while(true){
 
        b.Accept(c);
        
 
        if(c.GetRecvSize() != SOCKET_ERROR) {
            memset(data,0,sizeof(data));
            c.RecvData(data,sizeof(data));  
            strcpy(send.data,data);
            send.C = c;
            HANDLE Th = CreateThread(  NULL,NULL,Thread,(LPVOID)&send,NULL,NULL );   
            CloseHandle( Th );
 
        }
 
    }
 
    c.Disconnect();
    b.StopServer();
    return 0;
}
 
DWORD WINAPI Thread( LPVOID _param )
{
 
 
 
    info rec = *((info*)_param);
    Client c = rec.C;
    char data[1024*64] = {NULL};
    strcpy(data,rec.data);
 
    pFile a;
    Client c2;
    Array ex;
    string url;
    c2.LoadWinsoсk();
    c2.CreateSocket();
 
 
    if(strlen(data) == 0) {
        c2.Disconnect();
        return 0;
    }else{
        ex = explode("\r\n",data);
        url = str_replace("Host: ","",ex[1] );
        c2.Connect(url.c_str(),80);
 
 
        
        a.open("test.txt","w");
        a.write(data);
        a.write("\n\n");
 
    
        c2.SendData(data,strlen(data));
            
        //cout<<"\n--------------------------------------\n"<<data<<"\n--------------------------------------\n";
        while(true)
        {
            
 
 
            c2.RecvData(data,sizeof(data)-1);
            if(c2.GetRecvSize() == 0 || c2.GetRecvSize() == SOCKET_ERROR){
                c.SendData(data,c2.GetRecvSize());
                break;  
            }
 
    
            a.write(data);
            a.write("\n\n");
        
                
            c.SendData(data,c2.GetRecvSize());
        
 
            if(c.GetSendSize() == 0 || c.GetSendSize() == SOCKET_ERROR || data[c2.GetRecvSize()] == '\0'){
                break;  
            }
 
            memset(data,0,sizeof(data));
        }
 
 
 
    }
    a.close();
    c2.Disconnect();
    return 0;
}
 
Текущее время: 13:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru