Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
 Аватар для GBIT
14 / 14 / 5
Регистрация: 05.10.2011
Сообщений: 223

Переделка кода Builder -> Visual Studio

03.11.2011, 16:22. Показов 2356. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Проблемка заключается в том, что я стал портировать код от С++ Builder в C++ Visual Studio 2010.
Повылазили куча ошибок. Что сам знал то пофиксил. Но вот что дальше даже не знаю.
Исходный код:
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
#include <windows.h>
#include <iostream.h>
#pragma hdrstop
#pragma argsused
 
int main(int argc, char* argv[])
{
    WSADATA version;
    DWORD startErr = WSAStartup(0x0202, &version);
    if (startErr)
    {
        cerr << "Windows socket library isn't version 2.2";
        return 1;
    }
 
    SOCKET client;
 
    client = socket(AF_INET, SOCK_STREAM, 0);
 
    struct sockaddr_in address_server;
    address_server.sin_family = AF_INET;
    address_server.sin_addr.S_un.S_addr = htonl(INADDR_LOOPBACK);
    address_server.sin_port = htons(1024);
 
    int connectErr;
    connectErr = connect(client, (struct sockaddr *) &address_server, sizeof(sockaddr));
 
    if (connectErr == SOCKET_ERROR)
    {
        return 2;
    }
 
    cout << "Connected" << endl;
    char buf[1024];
    memcpy(buf, "hello\r\n", 8);
    send(client, buf, 7, 0);
    cout << "Server response waitting..." << endl;
    memset(buf, 0, 1024);
    recv(client, buf, 1024, 0);
    cout << "Server response = " << buf;
    int err = 0;
    if (strnicmp(buf, "hello\r\n", 7))
        err = 1;
    bool end = false;
    string cmd;
    while (!end && !err)
    {
        cout << "Enter command for server: " << endl;
        cin.getline(buf, 100);
        cmd = buf;
        cmd += "\r\n";
        send(client, cmd.c_str(), cmd.size(), 0);
        memset(buf, 0, 1024);
        recv(client, buf, 1024, 0);
        cout << "Server response = " << buf;
        if (!strnicmp(buf, "Error command\r\n", 15))
        {
            err = 1;
            end = 1;
        }
        else if (!strnicmp(buf, "goodby\r\n", 7))
            end = 1;
    }
 
    closesocket(client);
 
    WSACleanup();
    return 0;
}
что я сделал?
всем cout, cin, cerr дописал std::
еще кстати ругается на тип string. а точнее вообще не видит его в подсветке.. даже не понимаю почему. Может ему тоже std:: дописать?

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
#include <windows.h>
#include <iostream>
#pragma hdrstop
 
#pragma argsused
 
int main(int argc, char* argv[])
{
    WSADATA version;
    DWORD startErr = WSAStartup(0x0202, &version);
    if (startErr)
    {
        std::cerr << "Windows socket library isn't version 2.2";
        return 1;
    }
 
    SOCKET client;
 
    client = socket(AF_INET, SOCK_STREAM, 0);
 
    struct sockaddr_in address_server;
    address_server.sin_family = AF_INET;
    address_server.sin_addr.S_un.S_addr = htonl(INADDR_LOOPBACK);
    address_server.sin_port = htons(1024);
 
    int connectErr;
    connectErr = connect(client, (struct sockaddr *) &address_server, sizeof(sockaddr));
 
    if (connectErr == SOCKET_ERROR)
    {
        return 2;
    }
 
    std::cout << "Connected" << std::endl;
    char buf[1024];
    memcpy(buf, "hello\r\n", 8);
    send(client, buf, 7, 0);
    std::cout << "Server response waitting..." << std::endl;
    memset(buf, 0, 1024);
    recv(client, buf, 1024, 0);
    std::cout << "Server response = " << buf;
    int err = 0;
    if (strnicmp(buf, "hello\r\n", 7))
        err = 1;
    bool end = false;
    std::string cmd;
    while (!end && !err)
    {
        std::cout << "Enter command for server: " << std::endl;
        std::cin.getline(buf, 100);
        cmd = buf;
        cmd += "\r\n";
        send(client, cmd.c_str(), cmd.size(), 0);
        memset(buf, 0, 1024);
        recv(client, buf, 1024, 0);
        std::cout << "Server response = " << buf;
        if (!strnicmp(buf, "Error command\r\n", 15))
        {
            err = 1;
            end = 1;
        }
        else if (!strnicmp(buf, "goodby\r\n", 7))
            end = 1;
    }
 
    closesocket(client);
 
    WSACleanup();
    return 0;
}


зы. текст проги в билдере стопудова компилится и верно работает.

Добавлено через 13 минут
на всякий случай приведу список ошибок компиляции
Code
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
1>------ Построение начато: проект: client, Конфигурация: Debug Win32 ------
1>Построение начато 03.11.2011 20:11:07.
1>InitializeBuildStatus:
1>  Обращение к "Debug\client.unsuccessfulbuild".
1>ClCompile:
1>  main.cpp
1>d:\project\client\main.cpp(8): warning C4068: неизвестная директива pragma
1>d:\project\client\main.cpp(46): warning C4996: 'strnicmp': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _strnicmp. See online help for details.
1>          c:\program files\microsoft visual studio 10.0\vc\include\string.h(248): см. объявление "strnicmp"
1>d:\project\client\main.cpp(50): error C2065: string: необъявленный идентификатор
1>d:\project\client\main.cpp(50): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "string"
1>d:\project\client\main.cpp(50): error C2065: string: необъявленный идентификатор
1>d:\project\client\main.cpp(50): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "cmd"
1>d:\project\client\main.cpp(50): error C2065: cmd: необъявленный идентификатор
1>d:\project\client\main.cpp(54): error C2065: cin: необъявленный идентификатор
1>d:\project\client\main.cpp(54): error C2228: выражение слева от ".getline" должно представлять класс, структуру или объединение
1>          тип: 'unknown-type'
1>d:\project\client\main.cpp(55): error C2065: cmd: необъявленный идентификатор
1>d:\project\client\main.cpp(56): error C2065: cmd: необъявленный идентификатор
1>d:\project\client\main.cpp(57): error C2065: cmd: необъявленный идентификатор
1>d:\project\client\main.cpp(57): error C2228: выражение слева от ".c_str" должно представлять класс, структуру или объединение
1>          тип: 'unknown-type'
1>d:\project\client\main.cpp(57): error C2065: cmd: необъявленный идентификатор
1>d:\project\client\main.cpp(57): error C2228: выражение слева от ".size" должно представлять класс, структуру или объединение
1>          тип: 'unknown-type'
1>
1>СБОЙ построения.
1>
1>Затраченное время: 00:00:01.47
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
зы это ошибки для уже ПРАВЛЕНОГО мною кода. тобишь для 2ого
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.11.2011, 16:22
Ответы с готовыми решениями:

Трудности с переводом кода из С++ Builder в Visual Studio 2010.
Вот само задание: Дана непустая последовательность различных натуральных чисел. Определить порядковый номер наименьшего из них. В...

Перевод кода с C++ Builder 6 на Visual Studio C++
Вот этот код нужно перевести с c++ builder 6 на студию. Заставляют писать только в студии, это у меня последнее задание. прошу помочь, это...

Переделка кода - из консоли в форму с++ builder
Помогите перевести код из консоли в форму с++ builder, понятное дело нужно выкинуть все выводы параметров, и переделать ввод начальных...

3
 Аватар для SalterOk
117 / 114 / 10
Регистрация: 02.06.2011
Сообщений: 280
03.11.2011, 22:27
Цитата Сообщение от GBIT Посмотреть сообщение
всем cout, cin, cerr дописал std::
это можно сделать удобней
C++
1
using namespace std;
вот без ошибок(насчет правильной работы не проверял)
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
#include <windows.h>
#include <iostream>
#pragma hdrstop
#pragma comment(lib,"Ws2_32.lib")
using namespace std;
    int main(int argc, char* argv[])
{
    WSADATA version;
    DWORD startErr = WSAStartup(0x0202, &version);
    if (startErr)
    {
        cerr << "Windows socket library isn't version 2.2";
        return 1;
    }
 
    SOCKET client;
 
    client = socket(AF_INET, SOCK_STREAM, 0);
 
    struct sockaddr_in address_server;
    address_server.sin_family = AF_INET;
    address_server.sin_addr.S_un.S_addr = htonl(INADDR_LOOPBACK);
    address_server.sin_port = htons(1024);
 
    int connectErr;
    connectErr = connect(client, (struct sockaddr *) &address_server, sizeof(sockaddr));
 
    if (connectErr == SOCKET_ERROR)
    {
        return 2;
    }
 
    cout << "Connected" << endl;
    char buf[1024];
    memcpy(buf, "hello\r\n", 8);
    send(client, buf, 7, 0);
    cout << "Server response waitting..." << endl;
    memset(buf, 0, 1024);
    recv(client, buf, 1024, 0);
    cout << "Server response = " << buf;
    int err = 0;
    if (strnicmp(buf, "hello\r\n", 7))
        err = 1;
    bool end = false;
    string cmd;
    while (!end && !err)
    {
        cout << "Enter command for server: " << endl;
        cin.getline(buf, 100);
        cmd = buf;
        cmd += "\r\n";
        send(client, cmd.c_str(), cmd.size(), 0);
        memset(buf, 0, 1024);
        recv(client, buf, 1024, 0);
        cout << "Server response = " << buf;
        if (!strnicmp(buf, "Error command\r\n", 15))
        {
            err = 1;
            end = 1;
        }
        else if (!strnicmp(buf, "goodby\r\n", 7))
            end = 1;
    }
 
    closesocket(client);
 
    WSACleanup();
    return 0;
}
1
 Аватар для GBIT
14 / 14 / 5
Регистрация: 05.10.2011
Сообщений: 223
05.11.2011, 20:04  [ТС]
забыл еще переделать strnicmp на _strnicmp
благодярю
0
96 / 96 / 21
Регистрация: 25.04.2012
Сообщений: 449
18.09.2012, 19:43
это Кукарцев заставил мучиться над этой лабой?))

Добавлено через 1 минуту
зы, просто у меня вопрос - как по этому коду, заставить работать сокеты через интернет?
у меня эта же лаба, и этот же код. когда клиент и сервер на одном компе - все работает. когда указываю ip в
Цитата Сообщение от SalterOk Посмотреть сообщение
address_server.sin_addr.S_un.S_addr = htonl(INADDR_LOOPBACK);
в шестнадцатиричном виде, но клиент все равно упорно не видит сервер. в чем проблема?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.09.2012, 19:43
Помогаю со студенческими работами здесь

Не работает отладка кода в Visual Studio pro 2012+qt visual studio add-in 1.2.1
Здравствуйте, скажите пожалуйста в чем проблема, запускаю этот код (F5) в Visual Studio #include &lt;QtWidgets/QApplication&gt; ...

Visual Studio 2015 или Embarcadero RAD Studio 10.1 Berlin (C++ Builder)
Хочу &quot;поковыряться&quot; (так сказать пощупать его руками) в С++ вот и возник вопрос какую IDE выбрать Visual Studio 2015 или Embarcadero RAD...

Что лучше - Visual Studio или Rad Studio(C++ Builder)?
Здравствуйте! Хотелось бы выслушать мнения общественности по поводу сравнения работы и перспектив в будущем сред Rad Studio и Visual Studio.

RAD Studio. Как форматирование кода максимально приблизить к Visual Studio?
Доброго времени суток! Прошу ответа на вопрос: как в Embarcadero RAD Studio XE2 (2011) форматирование кода максимально приблизить к Visual...

Из C++ Builder в Visual Studio
Всем привет! Я начинаю только изучать C#, есть небольшой (прям очень маленький) опыт программирования на C++. Рассматривал в качестве среды...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru