0 / 0 / 0
Регистрация: 31.03.2014
Сообщений: 8

Подключение CUrl (ошибка undefined reference to `_imp__curl_easy_int')

31.03.2014, 17:02. Показов 7077. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Скажу сразу, в Qt я новичок (да и в c++ тоже не особо)

В .pro файле добавляю
C++ (Qt)
1
2
3
LIBS += -LC:/lib
 
LIBS += -lcurl
Спросите почему именно так? - Подключение cURL к QT

Инклуды я закинул ко всем инклудам и подключил curl.h
C++ (Qt)
1
#include <curl/curl.h>
Простенький код:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
CURL *curl;
    CURLcode res;
    QString buffer;
 
    curl = curl_easy_init();
    if(curl) {
      curl_easy_setopt(curl, CURLOPT_URL, "http://site.ru");
      curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
      curl_easy_setopt(curl, CURLOPT_WRITEDATA, &buffer);
 
      res = curl_easy_perform(curl);
      if(res == CURLE_OK)
        qDebug() << buffer;
 
      curl_easy_cleanup(curl);
    }
И на все функции curl получаю ошибку "undefined reference to"
В чем проблема?

P.S.: с curl знаком с php
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.03.2014, 17:02
Ответы с готовыми решениями:

Подключение к АЦП по usb и ошибка "Undefined reference"
Здравствуйте. На днях я стал несчастным (:jokingly:) обладателем АЦП Zet. На их сайте нашел примеры подключения к устройству через их...

Undefined reference при подключении curl
Пытаюсь подключить данную библиотеку к проекту c++ Использую GCC и G++ на ElementaryOS (дистрибутив убунту) Библиотека подключена через...

Странная ошибка: [Linker error] undefined reference to `__dyn_tls_init_callback' [Linker error] undefined reference to ld returned 1 exit status
Здравствуйте. Вот недавно начал изучать книгу &quot;С++ для чайников&quot; Стефан Р. Девис 4-е издание. И напоролся на кучу ошибок) Но смог все...

4
Автор FAQ
 Аватар для Чистый
2733 / 1429 / 89
Регистрация: 08.09.2011
Сообщений: 3,746
Записей в блоге: 1
31.03.2014, 17:22
проверьте выводы компилятора линкует ли он библиотеку или нет
0
0 / 0 / 0
Регистрация: 31.03.2014
Сообщений: 8
31.03.2014, 17:42  [ТС]
Как я уже писал - с Qt не очень знаком, не знаю что такое выводы компилятора...
Если вы о том что во вкладке "Консоль сборки", вот все что там есть:
Кликните здесь для просмотра всего текста
16:30:50: Выполняются этапы для проекта vkcom...
16:30:50: Настройки не изменились, этап qmake пропускается.
16:30:50: Запускается: «E:\Qt\Tools\mingw48_32\bin\mingw32-make.exe»
E:/Qt/Tools/mingw48_32/bin/mingw32-make -f Makefile.Debug
mingw32-make[1]: Entering directory 'E:/Qt/Tools/QtCreator/bin/build-vkcom-Desktop_Qt_5_2_1_MinGW_32bit-Release'
g++ -Wl,-subsystem,windows -mthreads -o debug\vkcom.exe debug/main.o debug/widget.o debug/json.o debug/moc_widget.o -lglu32 -lopengl32 -lgdi32 -luser32 -lmingw32 -lqtmaind -LC:/lib -lcurl -LE:\Qt\5.2.1\mingw48_32\lib -lQt5WebKitWidgetsd -lQt5Quickd -lQt5MultimediaWidgetsd -lQt5OpenGLd -lQt5PrintSupportd -lQt5WebKitd -lQt5Qmld -lQt5Multimediad -lQt5Widgetsd -lQt5Networkd -lQt5Positioningd -lQt5Sensorsd -lQt5Guid -lQt5Cored
debug/widget.o: In function `ZN6Widget17on_BLOGIN_clickedEv':
E:\Qt\Tools\QtCreator\bin\build-vkcom-Desktop_Qt_5_2_1_MinGW_32bit-Release/../vkcom/widget.cpp:131: undefined reference to `_imp__curl_easy_init'
E:\Qt\Tools\QtCreator\bin\build-vkcom-Desktop_Qt_5_2_1_MinGW_32bit-Release/../vkcom/widget.cpp:134: undefined reference to `_imp__curl_easy_setopt'
E:\Qt\Tools\QtCreator\bin\build-vkcom-Desktop_Qt_5_2_1_MinGW_32bit-Release/../vkcom/widget.cpp:135: undefined reference to `_imp__curl_easy_setopt'
E:\Qt\Tools\QtCreator\bin\build-vkcom-Desktop_Qt_5_2_1_MinGW_32bit-Release/../vkcom/widget.cpp:136: undefined reference to `_imp__curl_easy_setopt'
E:\Qt\Tools\QtCreator\bin\build-vkcom-Desktop_Qt_5_2_1_MinGW_32bit-Release/../vkcom/widget.cpp:138: undefined reference to `_imp__curl_easy_perform'
Makefile.Debug:82: recipe for target 'debug\vkcom.exe' failed
E:\Qt\Tools\QtCreator\bin\build-vkcom-Desktop_Qt_5_2_1_MinGW_32bit-Release/../vkcom/widget.cpp:142: undefined reference to `_imp__curl_easy_cleanup'
collect2.exe: error: ld returned 1 exit status
mingw32-make[1]: Leaving directory 'E:/Qt/Tools/QtCreator/bin/build-vkcom-Desktop_Qt_5_2_1_MinGW_32bit-Release'
makefile:34: recipe for target 'debug' failed
mingw32-make[1]: *** [debug\vkcom.exe] Error 1
mingw32-make: *** [debug] Error 2
16:30:57: Процесс «E:\Qt\Tools\mingw48_32\bin\mingw32-make.exe» завершился с кодом 2.
Ошибка при сборке/установке проекта vkcom (комплект: Desktop Qt 5.2.1 MinGW 32bit)
Во время выполнения этапа «Сборка»
16:30:57: Прошло времени: 00:08.


Добавлено через 2 минуты
Даже не заметил что стоял релиз...
Вот консоль дебага:
Кликните здесь для просмотра всего текста
16:40:14: Выполняются этапы для проекта vkcom...
16:40:14: Настройки не изменились, этап qmake пропускается.
16:40:14: Запускается: «E:\Qt\Tools\mingw48_32\bin\mingw32-make.exe»
E:\Qt\5.2.1\mingw48_32\bin\qmake.exe -spec win32-g++ CONFIG+=debug CONFIG+=declarative_debug CONFIG+=qml_debug -o Makefile ..\vkcom\vkcom.pro
E:/Qt/Tools/mingw48_32/bin/mingw32-make -f Makefile.Debug
mingw32-make[1]: Entering directory 'E:/Qt/Tools/QtCreator/bin/build-vkcom-Desktop_Qt_5_2_1_MinGW_32bit-Debug'
g++ -c -pipe -fno-keep-inline-dllexport -g -frtti -Wall -Wextra -fexceptions -mthreads -DUNICODE -DQT_QML_DEBUG -DQT_DECLARATIVE_DEBUG -DQT_WEBKITWIDGETS_LIB -DQT_QUICK_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_OPENGL_LIB -DQT_PRINTSUPPORT_LIB -DQT_WEBKIT_LIB -DQT_QML_LIB -DQT_MULTIMEDIA_LIB -DQT_WIDGETS_LIB -DQT_NETWORK_LIB -DQT_POSITIONING_LIB -DQT_SENSORS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN -I..\vkcom -I"..\..\..\..\5.2.1\mingw48_32\includ e" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tWebKitWidgets" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tQuick" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tMultimediaWidgets" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tOpenGL" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tPrintSupport" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tWebKit" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tQml" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tMultimedia" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tWidgets" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tNetwork" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tPositioning" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tSensors" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tGui" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tCore" -I"debug" -I"." -I"." -I"..\..\..\..\5.2.1\mingw48_32\mkspecs\w in32-g++" -o debug\main.o ..\vkcom\main.cpp
g++ -c -pipe -fno-keep-inline-dllexport -g -frtti -Wall -Wextra -fexceptions -mthreads -DUNICODE -DQT_QML_DEBUG -DQT_DECLARATIVE_DEBUG -DQT_WEBKITWIDGETS_LIB -DQT_QUICK_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_OPENGL_LIB -DQT_PRINTSUPPORT_LIB -DQT_WEBKIT_LIB -DQT_QML_LIB -DQT_MULTIMEDIA_LIB -DQT_WIDGETS_LIB -DQT_NETWORK_LIB -DQT_POSITIONING_LIB -DQT_SENSORS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN -I..\vkcom -I"..\..\..\..\5.2.1\mingw48_32\includ e" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tWebKitWidgets" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tQuick" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tMultimediaWidgets" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tOpenGL" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tPrintSupport" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tWebKit" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tQml" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tMultimedia" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tWidgets" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tNetwork" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tPositioning" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tSensors" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tGui" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tCore" -I"debug" -I"." -I"." -I"..\..\..\..\5.2.1\mingw48_32\mkspecs\w in32-g++" -o debug\widget.o ..\vkcom\widget.cpp
E:\Qt\5.2.1\mingw48_32\bin\moc.exe -DUNICODE -DQT_QML_DEBUG -DQT_DECLARATIVE_DEBUG -DQT_WEBKITWIDGETS_LIB -DQT_QUICK_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_OPENGL_LIB -DQT_PRINTSUPPORT_LIB -DQT_WEBKIT_LIB -DQT_QML_LIB -DQT_MULTIMEDIA_LIB -DQT_WIDGETS_LIB -DQT_NETWORK_LIB -DQT_POSITIONING_LIB -DQT_SENSORS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN -D__GNUC__ -DWIN32 -I..\vkcom -I"..\..\..\..\5.2.1\mingw48_32\includ e" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tWebKitWidgets" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tQuick" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tMultimediaWidgets" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tOpenGL" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tPrintSupport" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tWebKit" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tQml" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tMultimedia" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tWidgets" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tNetwork" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tPositioning" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tSensors" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tGui" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tCore" -I"debug" -I"." -I"." -I"..\..\..\..\5.2.1\mingw48_32\mkspecs\w in32-g++" ..\vkcom\widget.h -o debug\moc_widget.cpp
g++ -c -pipe -fno-keep-inline-dllexport -g -frtti -Wall -Wextra -fexceptions -mthreads -DUNICODE -DQT_QML_DEBUG -DQT_DECLARATIVE_DEBUG -DQT_WEBKITWIDGETS_LIB -DQT_QUICK_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_OPENGL_LIB -DQT_PRINTSUPPORT_LIB -DQT_WEBKIT_LIB -DQT_QML_LIB -DQT_MULTIMEDIA_LIB -DQT_WIDGETS_LIB -DQT_NETWORK_LIB -DQT_POSITIONING_LIB -DQT_SENSORS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN -I..\vkcom -I"..\..\..\..\5.2.1\mingw48_32\includ e" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tWebKitWidgets" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tQuick" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tMultimediaWidgets" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tOpenGL" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tPrintSupport" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tWebKit" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tQml" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tMultimedia" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tWidgets" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tNetwork" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tPositioning" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tSensors" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tGui" -I"..\..\..\..\5.2.1\mingw48_32\include\Q tCore" -I"debug" -I"." -I"." -I"..\..\..\..\5.2.1\mingw48_32\mkspecs\w in32-g++" -o debug\moc_widget.o debug\moc_widget.cpp
g++ -Wl,-subsystem,windows -mthreads -o debug\vkcom.exe debug/main.o debug/widget.o debug/json.o debug/moc_widget.o -lglu32 -lopengl32 -lgdi32 -luser32 -lmingw32 -lqtmaind -LC:/lib -lcurl -LE:\Qt\5.2.1\mingw48_32\lib -lQt5WebKitWidgetsd -lQt5Quickd -lQt5MultimediaWidgetsd -lQt5OpenGLd -lQt5PrintSupportd -lQt5WebKitd -lQt5Qmld -lQt5Multimediad -lQt5Widgetsd -lQt5Networkd -lQt5Positioningd -lQt5Sensorsd -lQt5Guid -lQt5Cored
debug/widget.o: In function `ZN6Widget17on_BLOGIN_clickedEv':
E:\Qt\Tools\QtCreator\bin\build-vkcom-Desktop_Qt_5_2_1_MinGW_32bit-Debug/../vkcom/widget.cpp:131: undefined reference to `_imp__curl_easy_init'
E:\Qt\Tools\QtCreator\bin\build-vkcom-Desktop_Qt_5_2_1_MinGW_32bit-Debug/../vkcom/widget.cpp:134: undefined reference to `_imp__curl_easy_setopt'
E:\Qt\Tools\QtCreator\bin\build-vkcom-Desktop_Qt_5_2_1_MinGW_32bit-Debug/../vkcom/widget.cpp:135: undefined reference to `_imp__curl_easy_setopt'
E:\Qt\Tools\QtCreator\bin\build-vkcom-Desktop_Qt_5_2_1_MinGW_32bit-Debug/../vkcom/widget.cpp:136: undefined reference to `_imp__curl_easy_setopt'
E:\Qt\Tools\QtCreator\bin\build-vkcom-Desktop_Qt_5_2_1_MinGW_32bit-Debug/../vkcom/widget.cpp:138: undefined reference to `_imp__curl_easy_perform'
E:\Qt\Tools\QtCreator\bin\build-vkcom-Desktop_Qt_5_2_1_MinGW_32bit-Debug/../vkcom/widget.cpp:142: undefined reference to `_imp__curl_easy_cleanup'
collect2.exe: error: ld returned 1 exit status
Makefile.Debug:82: recipe for target 'debug\vkcom.exe' failed
mingw32-make[1]: Leaving directory 'E:/Qt/Tools/QtCreator/bin/build-vkcom-Desktop_Qt_5_2_1_MinGW_32bit-Debug'
makefile:34: recipe for target 'debug' failed
mingw32-make[1]: *** [debug\vkcom.exe] Error 1
mingw32-make: *** [debug] Error 2
16:40:36: Процесс «E:\Qt\Tools\mingw48_32\bin\mingw32-make.exe» завершился с кодом 2.
Ошибка при сборке/установке проекта vkcom (комплект: Desktop Qt 5.2.1 MinGW 32bit)
Во время выполнения этапа «Сборка»
16:40:36: Прошло времени: 00:22.
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
31.03.2014, 17:49
Скорее всего неправильно указан путь тут
C++ (Qt)
1
LIBS += -LC:/lib
Блог: Библиотека libcurl
0
1 / 1 / 0
Регистрация: 10.06.2014
Сообщений: 2
10.06.2014, 18:14
Не знаю, по теме это будет или нет но, при поиске

ошибка: undefined reference to `_imp__WSAStartup@8'

я в первую очередь натыкался на эту статью и поэтому пишу ответ именно тут чтобы народ не бегал по просторам интернета в поисках ответа (птому что я реально заколебался пока нашел что и куда надо прикрутить).

для тех у кого Qt и у кого возникает вот такая ошибка (описаная выше), лезем в профайл и добавляем там вот такую строку

win32:LIBS += libws2_32

заодно приведу и простейшие рабочие эхо-сервер и клиент на сокетах под виндовс(нашел на просторах инета)
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
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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
/*сервер*/
#include <stdio.h>
#include <winsock2.h>  // Wincosk2.h должен быть
         // подключен раньше windows.h!
#include <windows.h>
 
#define MY_PORT    666
          // Порт, который слушает сервер
 
 // макрос для печати количества активных
 // пользователей
 #define PRINTNUSERS if (nclients)\
 printf("%d user on-line\n",nclients);\
 else printf("No User on line\n");
 
 // прототип функции, обслуживающий
 // подключившихся пользователей
 DWORD WINAPI SexToClient(LPVOID client_socket);
 
 // глобальная переменная – количество
 // активных пользователей
 int nclients = 0;
 
 int main(void)
 {
   char buff[1024];    // Буфер для различных нужд
 
   printf("TCP SERVER DEMO\n");
 
   /* Шаг 1 - Инициализация Библиотеки Сокетов
   // Т.к. возвращенная функцией информация
   // не используется ей передается указатель на
   // рабочий буфер, преобразуемый
   // к указателю  на структуру WSADATA.
   // Такой прием позволяет сэкономить одну
   // переменную, однако, буфер должен быть не менее
   // полкилобайта размером (структура WSADATA
   занимает 400 байт)*/
   if (WSAStartup(0x0202,(struct WSADATA *) &buff[0]))
   {
     // Ошибка!
         printf("Error WSAStartup %d\n",
            WSAGetLastError());
     return -1;
   }
 
   // Шаг 2 - создание сокета
   SOCKET mysocket;
   // AF_INET     - сокет Интернета
   // SOCK_STREAM  - потоковый сокет (с
   //      установкой соединения)
   // 0      - по умолчанию выбирается TCP протокол
 if ((mysocket=socket(AF_INET,SOCK_STREAM,0))<0)
   {
     // Ошибка!
     printf("Error socket %d\n",WSAGetLastError());
     WSACleanup();
       // Деиницилизация библиотеки Winsock
     return -1;
   }
 
   // Шаг 3 связывание сокета с локальным адресом
   struct sockaddr_in local_addr;
   local_addr.sin_family=AF_INET;
   local_addr.sin_port=htons(MY_PORT);
            // не забываем о сетевом порядке!!!
   local_addr.sin_addr.s_addr=0;
            // сервер принимает подключения
            // на все IP-адреса
 
   // вызываем bind для связывания
   if (bind(mysocket,(struct sockaddr *) &local_addr,
               sizeof(local_addr)))
   {
     // Ошибка
     printf("Error bind %d\n",WSAGetLastError());
     closesocket(mysocket);  // закрываем сокет!
     WSACleanup();
     return -1;
   }
 
   // Шаг 4 ожидание подключений
   // размер очереди – 0x100
   if (listen(mysocket, 0x100))
   {
     // Ошибка
     printf("Error listen %d\n",WSAGetLastError());
     closesocket(mysocket);
     WSACleanup();
     return -1;
   }
 
   printf("Ожидание подключений\n");
 
   // Шаг 5 извлекаем сообщение из очереди
   SOCKET client_socket;    // сокет для клиента
   struct sockaddr_in client_addr;    // адрес клиента
             // (заполняется системой)
 
   // функции accept необходимо передать размер
   // структуры
   int client_addr_size=sizeof(client_addr);
 
   // цикл извлечения запросов на подключение из
   // очереди
   while((client_socket=accept(mysocket, (struct sockaddr *)&client_addr, &client_addr_size)))
   {
     nclients++;      // увеличиваем счетчик
             // подключившихся клиентов
 
     // пытаемся получить имя хоста
     HOSTENT *hst;
     hst=gethostbyaddr((char *)
         &client_addr.sin_addr.s_addr,4, AF_INET);
 
     // вывод сведений о клиенте
     printf("+%s [%s] new connect!\n",
     (hst)?hst->h_name:"",
     inet_ntoa(client_addr.sin_addr));
     PRINTNUSERS
 
     // Вызов нового потока для обслужвания клиента
     // Да, для этого рекомендуется использовать
     // _beginthreadex но, поскольку никаких вызов
     // функций стандартной Си библиотеки поток не
     // делает, можно обойтись и CreateThread
     DWORD thID;
     CreateThread(NULL,NULL,SexToClient,
             &client_socket,NULL,&thID);
   }
   return 0;
 }
 
 // Эта функция создается в отдельном потоке и
 // обсуживает очередного подключившегося клиента
 // независимо от остальных
 DWORD WINAPI SexToClient(LPVOID client_socket)
 {
   SOCKET my_sock;
   my_sock=((SOCKET *) client_socket)[0];
   char buff[20*1024];
   #define sHELLO "Hello, Sailor\r\n"
 
   // отправляем клиенту приветствие
   send(my_sock,sHELLO,sizeof(sHELLO),0);
 
   // цикл эхо-сервера: прием строки от клиента и
   // возвращение ее клиенту
   int bytes_recv;
   while( (bytes_recv = recv(my_sock,&buff[0],sizeof(buff),0)) && bytes_recv !=SOCKET_ERROR)
     send(my_sock,&buff[0],bytes_recv,0);
 
   // если мы здесь, то произошел выход из цикла по
   // причине возращения функцией recv ошибки –
   // соединение клиентом разорвано
   nclients--; // уменьшаем счетчик активных клиентов
   printf("-disconnect\n"); PRINTNUSERS
 
   // закрываем сокет
   closesocket(my_sock);
   return 0;
 }
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
103
104
105
106
107
/*клиент*/
#include <stdio.h>
 #include <string.h>
 #include <winsock2.h>
 #include <windows.h>
 
 
 #define PORT 666
 #define SERVERADDR "127.0.0.1"
 
 int main(void)
 {
   char buff[1024];
   printf("TCP DEMO CLIENT\n");
 
   // Шаг 1 - инициализация библиотеки Winsock
   if (WSAStartup(0x202,(struct 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
   // указание адреса и порта сервера
   struct 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,(struct sockaddr *)&dest_addr,
               sizeof(dest_addr)))
   {
     printf("Connect error %d\n",WSAGetLastError());
     return -1;
   }
 
   printf("Соединение с %s успешно установлено\n\
   Type quit for quit\n\n",SERVERADDR);
 
   // Шаг 4 - чтение и передача сообщений
   int nsize;
   while((nsize=recv(my_sock,&buff[0],
                     sizeof(buff)-1,0))
                 !=SOCKET_ERROR)
   {
     // ставим завершающий ноль в конце строки
     buff[nsize]=0;
 
     // выводим на экран
     printf("S=>C:%s",buff);
 
     // читаем пользовательский ввод с клавиатуры
     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,&buff[0],nsize,0);
   }
 
   printf("Recv error %d\n",WSAGetLastError());
   closesocket(my_sock);
   WSACleanup();
   return -1;
 }
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.06.2014, 18:14
Помогаю со студенческими работами здесь

ошибка undefined reference to
Всем привет! подскажите, пожалуйста, почему выскакивает ошибка: undefined reference to `Thread::setCompleted()' collect2: ld...

Ошибка `undefined reference to`
Выскакивает вот такая вот ошибка: undefined reference to ?Подскажите, пожалуйста, как это исправить? И еще рядом с file.h находится...

Ошибка undefined reference to
main.cpp #include &lt;locale&gt; #include &lt;iostream&gt; #include &lt;Windows.h&gt; #include &quot;Class.h&quot; using namespace std; int main() { ...

Ошибка undefined reference to
Здравствуйте,столкнулся с проблемкой,никак не получается ее решить. Вот код: main: #include &lt;QApplication&gt; #include...

Ошибка undefined reference to
При сборке выбивает ошибку: undefined reference to `Atom:: DoBCC(float, int, int, int)'. Ткните носом, пожалуйста, где ошибка. Заранее...


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

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

Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru