Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 22.01.2016
Сообщений: 7
1

Клиент на WinSock и ошибка LNK1120

25.12.2016, 13:07. Показов 768. Ответов 1

Author24 — интернет-сервис помощи студентам
Добрый день. Вчера я обращался к форумчанам за помощью в сборке сервера.
Теперь пытаюсь собрать клиент по примеру всё того же самоучителя Криса Касперски.
Заранее прописал эти строки в начало:
C++
1
2
#define _WINSOCK_DEPRECATED_NO_WARNINGS
#pragma comment(lib, "ws2_32.lib")
и эти в Main, чтоб великий и могучий выводился консолью:
C++
1
2
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
Вот получившийся код:
Кликните здесь для просмотра всего текста

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
#define _WINSOCK_DEPRECATED_NO_WARNINGS
#pragma comment(lib, "ws2_32.lib")
#include <stdio.h>
#include <string.h>
#include <WinSock2.h>
#include <Windows.h>
#define PORT 666
#define SERVERADDR "127.0.0.1"
int main(int argc, char* argv[])
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    char buff[1024];
    printf("TCP DEMO CLIENT\n");
    // Шаг 1  инициализация библиотеки Winsock
    if (WSAStartup(0x202, (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 – указание адреса и порта сервера
    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, (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>------ Сборка начата: проект: CLIENT, Конфигурация: Debug Win32 ------
1> Main.cpp
1>MSVCRTD.lib(exe_winmain.obj) : error LNK2019: ссылка на неразрешенный внешний символ _WinMain@16 в функции "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ)
1>C:\_ПУТЬ_\CLIENT\Debug\CLIENT.exe : fatal error LNK1120: неразрешенных внешних элементов: 1


MS Visual Studio 2015
Заранее большое спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.12.2016, 13:07
Ответы с готовыми решениями:

Winsock C++ клиент - сервер
#include &lt;winsock2.h&gt; // сервер #include &lt;iostream&gt; using namespace std; int main(){ //...

Ошибка LNK1120
Здравствуйте! У проблема возникновения ошибки при инициализации: 1&gt;Тестируем все.obj : error...

Ошибка LNK2001 и LNK1120
#include &lt;math.h&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; const double dt=1e-3; const double...

Ошибка LNK1120: 4 unresolved externals
Добрый день. Помогите решить проблему с возникающей ошибкой. Причину самостоятельно найти не могу....

1
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
25.12.2016, 15:07 2
Скорее всего, тип проекта не соответствует такой main():
Цитата Сообщение от BurnBird Посмотреть сообщение
C++
1
int main(int argc, char* argv[])
0
25.12.2016, 15:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.12.2016, 15:07
Помогаю со студенческими работами здесь

В чём ошибка? fatal error LNK1120
Добрый вечер) Вот код, состоящий из класса(отдельного файла) и главной функции: #pragma once ...

Ошибка error LNK2019 & LNK1120 и md5()
Добавил поддержку md5(), код с сайта http://www.zedwood.com/article/cpp-md5-function Пробую...

Ошибка-----fatal error LNK1120-- Где неправильно?
Поскажите где ошибка? #include&lt;iostream&gt; using namespace std; int main() { for(;;)

Ошибка 3 error LNK1120: неразрешенных внешних элементов: 2
Добрый день. Возникла такая проблема. При компиляции показывает 3 ошибки. Ошибка 1 error...


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

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