Форум программистов, компьютерный форум, киберфорум
C++: Сети
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 02.05.2014
Сообщений: 10
1

C++ winsock. Ошибка сборщика error LNK2019

01.04.2015, 13:50. Показов 1360. Ответов 5
Метки нет (Все метки)

Здравствуйте!
Я делаю программу по отправке письма на эл. почту посредством сокета. Нашел данный код в недрах Интернета:
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
#define _CRT_SECURE_NO_WARNINGS
 
#include <windows.h>
#include <winsock.h>
#include <stdio.h>
 
WSADATA ws;
SOCKET s;
struct sockaddr_in addr;
hostent *d_addr;
char text[1024];
 
class mainClass
{
public:
    int main(); // Function declaration
};
 
int mainClass::main()
{
    // инициализируем сокеты
    if (FAILED(WSAStartup(MAKEWORD(1, 1), &ws)))
    {
        printf("Error in WSAStartup(...)\n");
        return 1;
    }
 
    // создаем сокет
    s = socket(AF_INET, SOCK_STREAM, 0);
    if (s == INVALID_SOCKET)
    {
        printf("Error in socket(...)\n");
        return 1;
    }
 
    // получаем адрес сервера
    d_addr = gethostbyname("smtp.mail.ru");
    if (d_addr == NULL)
    {
        printf("Error in gethostbyname(...)\n");
        return 1;
    };
 
    // заполняем параметры адреса
    addr.sin_family = AF_INET;
    addr.sin_addr.s_addr = *((unsigned long *)d_addr->h_addr);
    addr.sin_port = htons(25);
 
    // устанавливаем соединение
    if (SOCKET_ERROR == (connect(s, (sockaddr *)&addr,
        sizeof (addr))))
    {
        printf("Error in connect(...)\n");
        return 1;
    }
 
    // ждем ответ от сервера
    recv(s, text, sizeof(text), 0);
    printf("recv - %s", text);
 
    // приветствуем сервер
    strcpy(text, "HELO smtp.mail.ru\r\n");
    send(s, text, strlen(text), 0);
    printf("send - %s", text);
 
    // ждем подтверждение от сервера
    recv(s, text, sizeof(text), 0);
    printf("recv - %s", text);
 
    // начинаем отправлять конверт состоящий из полей
    // MAIL FROM: и RCPT TO: После каждого поля ждем
    // подтверждение
 
    // сообщаем отправителя
    strcpy(text, "MAIL FROM: [email]sender@mail.ru[/email]\r\n");
    send(s, text, strlen(text), 0);
    printf("send - %s", text);
 
    // ждем подтверждение от сервера
    recv(s, text, sizeof(text), 0);
    printf("recv - %s", text);
 
    // сообщаем получателя
    strcpy(text, "RCPT TO: [email]receiver@mtu-net.ru[/email]\r\n");
    send(s, text, strlen(text), 0);
    printf("send - %s", text);
 
    // ждем подтверждение от сервера
    recv(s, text, sizeof(text), 0);
    printf("recv - %s", text);
 
    // подаем команду, что готовы начать передачу письма
    strcpy(text, "DATA\r\n");
    send(s, text, strlen(text), 0);
    printf("send - %s", text);
 
    // ждем подтверждение от сервера
    recv(s, text, sizeof(text), 0);
    printf("recv - %s", text);
 
    // передаем заголовок
 
    // от кого письмо
    strcpy(text, "FROM: [email]sender@mail.ru[/email]\r\n");
    send(s, text, strlen(text), 0);
    printf("send - %s", text);
 
    // кому письмо
    strcpy(text, "TO: [email]receiver@mtu-net.ru[/email]\r\n");
    send(s, text, strlen(text), 0);
    printf("send - %s", text);
 
    // тема письма
    strcpy(text, "SUBJECT: test\r\n");
    send(s, text, strlen(text), 0);
    printf("send - %s", text);
 
    // текст письма
    strcpy(text, "Hi!\nIt is a message for you\n");
    send(s, text, strlen(text), 0);
    printf("send - %s", text);
 
    // говорим, что закончили
    strcpy(text, "\r\n.\r\n");
    send(s, text, strlen(text), 0);
    printf("send - %s", text);
    recv(s, text, sizeof(text), 0);
    printf("recv - %s", text);
 
    // прощаемся с сервером
    strcpy(text, "QUIT");
    send(s, text, strlen(text), 0);
    printf("send - %s", text);
 
    // закрываем сокет
    closesocket(s);
 
    return 0;
}
В оригинале выгладит без класса mainClass, но получив ошибки сборщика и прочитав о них на stack overflow, объявил класс и функцию. Но затем всплыли "error LNK2019: unresolved external symbol _closesocket@4 referenced in function "public: int __thiscall mainClass::main(void)" (?main@mainClass@@QAEHXZ)". Не могу разобраться в чём проблема и в Интернете похожих проблем не нашел , прошу помочь.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.04.2015, 13:50
Ответы с готовыми решениями:

В функции отправки письма ошибка: error LNK2019: ссылка на неразрешенный внешний символ _connect@1
Просто мирная функция отправки мыла, и тут такие плохие ошибки. У меня VS2012 (МОЖЕТ ЛУЧШЕ...

Ошибка error LNK2019:
Не могу понять с чего выдает эту ошибку. Все правильно задано ! В чем дело никто не подскажет?

Ошибка 2 error LNK2019, не пойму в чем ошибка
Выдает такую ошибку: Ошибка 2 error LNK2019: ссылка на неразрешенный внешний символ &quot;int __cdecl...

Ошибка компиляции: error LNK2019 VS2013
Кратко: Делаю простые моды для игр. Есть открытый исходный код клиента одной игры, который...

5
528 / 430 / 159
Регистрация: 25.11.2014
Сообщений: 1,662
01.04.2015, 14:03 2
Лучший ответ Сообщение было отмечено Megalodon как решение

Решение

Вот так всегда - в интернете накопаем, а базы не знаем. В опциях проекта, в Linker -> Input -> Additional Dependencies добавь Ws2_32.lib;
На русском не знаю, какие там меню, думаю найдешь.
1
0 / 0 / 0
Регистрация: 02.05.2014
Сообщений: 10
01.04.2015, 14:08  [ТС] 3
Спасибо, решили проблему ! У меня как раз англоязычная версия
0
15350 / 8298 / 2014
Регистрация: 30.01.2014
Сообщений: 14,168
01.04.2015, 22:23 4
Цитата Сообщение от Megalodon Посмотреть сообщение
В оригинале выгладит без класса mainClass, но получив ошибки сборщика и прочитав о них на stack overflow, объявил класс и функцию.
Так делать нельзя. main должна быть свободной функцией.
0
0 / 0 / 0
Регистрация: 02.05.2014
Сообщений: 10
02.04.2015, 00:21  [ТС] 5
Да, я сделал как было изначально, всё скомпилилось. Но программа упорно не хочет доставлять мои сообщения. Пробовал бесплатные SMTP сервера, не отправляется. Я уже скачал и установил SMTP сервер, вроде бы настроил, но не пашет. Садовая моя голова
Сервер выдаёт, что сообщение в очереди "Сообщение, вероятно, было доставлено получателю и больше не доступны в очереди". И естественно оно так и не приходит мне.
0
1 / 1 / 1
Регистрация: 02.04.2015
Сообщений: 5
04.04.2015, 23:20 6
Попробуй отправить письмо ручками, используя telnet на 25 порт:

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
telnet example.com 25
ehlo example.com
mail from: [email]username@example.com[/email]
rcpt to: [email]friend@hotmail.com[/email], [email]friend2@yahoo.com[/email]
data
Subject: My Telnet Test Email
 
Hello,
 
This is an email sent by using the telnet command.
 
Your friend,
Me
 
.
quit
Ахтунг: Не знаю как убрать [email] выше (это не нужно здесь, вставляется автоматом форумом).

Можешь отправить сам себе письмо прямо в ящик мыльного провайдера, например, на mail.ru:

From: http://www.hashemian.com/tools/domain-email.php
Domain Mail Server/Exchanger for: mail.ru

mail.ru. IN MX 10 mxs.mail.ru.
--> mxs.mail.ru. = 217.69.139.150
--> mxs.mail.ru. = 94.100.180.150

mail.ru. IN A 217.69.139.200
mail.ru. IN A 94.100.180.202
mail.ru. IN A 217.69.139.202
mail.ru. IN A 94.100.180.200
Подключайся на адрес в MX рекорде с помощью telnet mxs.mail.ru 25 и отправляй сам себе мыло, которое сразу увидишь в ящике.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.04.2015, 23:20

Ошибка линковки error LNK2001 и LNK2019
Здравствуйте! Написана программа по определению контура руки.использую opencv 2.4.6 Собираю...

Ошибка при компиляции error LNK2019
IMG.obj : error LNK2019: ссылка на неразрешенный внешний символ &quot;unsigned long __cdecl...

Ошибка: error LNK2019, почему не работает деструктор?
# include &lt;iostream&gt; # include &lt;cstdlib&gt; # include &lt;fstream&gt; using namespace std; class...

Ошибка: error LNK2019: unresolved external symbol
Здравствуйте, Подскажите пожалуйста, у меня есть написанная программа на с++, она компилируется и...

Ошибка компиляции: error LNK2019 OpenCV VS2010
Система Windows 7 x64 VS 2010 Ultimate OpenCV 2.4.9 Я только пробую свои силы в VS С++.......

Ошибка: error LNK2019: unresolved external symbol
В общем делаю курсач, есть фунция ввода списка, но тут такая проблема: у меня не компилируется, то...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru