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

Не работает серверное приложение

06.04.2017, 20:34. Показов 1442. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
да и вообще посоветуйте где можно почитать про программирование tcp/ip и сокеты пожалуйста
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
//#define _WINSOCK_DEPRECATED_NO_WARNINGS
#include "stdafx.h"
#include <stdio.h>
#include <winsock2.h> // Wincosk2.h должен быть раньше windows!
#include <ws2tcpip.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(int argc, char* argv[])
{
    char buff[1024];
    printf("TCP SERVER DEMO\n");
    if (WSAStartup(0x0202, (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 связывание сокета с локальным адресом
    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, (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; // сокет для клиента
    sockaddr_in client_addr; // адрес клиента (заполняется системой)
    // функции accept необходимо передать размер структуры
    int client_addr_size = sizeof(client_addr);
    // цикл извлечения запросов на подключение из очереди
    while ((client_socket = accept(mysocket, (sockaddr *)&client_addr, &client_addr_size)))
    {
        nclients++; // увеличиваем счетчик подключившихся клиентов
        // пытаемся получить имя хоста
        DWORD dwRetval;//HOSTENT *hst;
        dwRetval = getnameinfo((struct sockaddr *)&client_addr, client_addr_size, buff, 1024, NULL, NULL, NI_NUMERICSERV);// gethostbyaddr((char *)&client_addr.sin_addr.s_addr, 4, AF_INET);
        // вывод сведений о клиенте
        if (dwRetval != 0) {
            printf("getnameinfo failed with error # %ld\n", WSAGetLastError());
            return 1;
        }
        else {
            printf("getnameinfo returned hostname = %s\n", buff);
            return 0;
        }
        //printf("+%s [%s] new connect!\n", buff, inet_ntop(AF_INET, client_addr.sin_addr, buff, 1024);// 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);
    // цикл эхо?сервера: прием строки от клиента и возвращение ее клиенту
    while (int 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
Error   9   error LNK2019: unresolved external symbol __imp__WSAStartup@8 referenced in function _main  C:\Users\Niko\Documents\Visual Studio 2013\Projects\IP\IP\IP.obj    IP
Error   11  error LNK2019: unresolved external symbol __imp__WSAGetLastError@0 referenced in function _main C:\Users\Niko\Documents\Visual Studio 2013\Projects\IP\IP\IP.obj    IP
Error   10  error LNK2019: unresolved external symbol __imp__WSACleanup@0 referenced in function _main  C:\Users\Niko\Documents\Visual Studio 2013\Projects\IP\IP\IP.obj    IP
Error   8   error LNK2019: unresolved external symbol __imp__socket@12 referenced in function _main C:\Users\Niko\Documents\Visual Studio 2013\Projects\IP\IP\IP.obj    IP
Error   7   error LNK2019: unresolved external symbol __imp__send@16 referenced in function "unsigned long __stdcall SexToClient(void *)" (?SexToClient@@YGKPAX@Z)  C:\Users\Niko\Documents\Visual Studio 2013\Projects\IP\IP\IP.obj    IP
Error   6   error LNK2019: unresolved external symbol __imp__recv@16 referenced in function "unsigned long __stdcall SexToClient(void *)" (?SexToClient@@YGKPAX@Z)  C:\Users\Niko\Documents\Visual Studio 2013\Projects\IP\IP\IP.obj    IP
Error   5   error LNK2019: unresolved external symbol __imp__listen@8 referenced in function _main  C:\Users\Niko\Documents\Visual Studio 2013\Projects\IP\IP\IP.obj    IP
Error   4   error LNK2019: unresolved external symbol __imp__htons@4 referenced in function _main   C:\Users\Niko\Documents\Visual Studio 2013\Projects\IP\IP\IP.obj    IP
Error   12  error LNK2019: unresolved external symbol __imp__getnameinfo@28 referenced in function _main    C:\Users\Niko\Documents\Visual Studio 2013\Projects\IP\IP\IP.obj    IP
Error   3   error LNK2019: unresolved external symbol __imp__closesocket@4 referenced in function "unsigned long __stdcall SexToClient(void *)" (?SexToClient@@YGKPAX@Z)    C:\Users\Niko\Documents\Visual Studio 2013\Projects\IP\IP\IP.obj    IP
Error   2   error LNK2019: unresolved external symbol __imp__bind@12 referenced in function _main   C:\Users\Niko\Documents\Visual Studio 2013\Projects\IP\IP\IP.obj    IP
Error   1   error LNK2019: unresolved external symbol __imp__accept@12 referenced in function _main C:\Users\Niko\Documents\Visual Studio 2013\Projects\IP\IP\IP.obj    IP
Error   13  error LNK1120: 12 unresolved externals  C:\Users\Niko\Documents\Visual Studio 2013\Projects\IP\Debug\IP.exe IP
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.04.2017, 20:34
Ответы с готовыми решениями:

Клиент-серверное приложение
Использую простой найденный сервер. Там есть строка принимающая данные: bytes_read = recv(*it,...

Клиент-серверное приложение
Была поставлена задача сделать серверное приложение работающее на выбранном порту. С телефона...

Асинхронное серверное приложение
Создал клиент-серверное приложение на C++/CLI на базе WinForms используя код отсюда:...

клиент-серверное приложение
Привет всем) Помогите пожалуйста... мне интересны клиент-серверные приложения... у меня есть...

2
183 / 181 / 66
Регистрация: 15.02.2015
Сообщений: 515
06.04.2017, 21:56 2
C++
1
#pragma comment (lib, "Ws2_32.lib")
0
Заблокирован
06.04.2017, 22:23 3
Цитата Сообщение от Niko Demin Посмотреть сообщение
где можно почитать про программирование tcp/ip
https://www.cyberforum.ru/post7959607.html
1
06.04.2017, 22:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.04.2017, 22:23
Помогаю со студенческими работами здесь

Клиент-серверное приложение
Здравствуйте Помогите пожалуйста с первым клиент серверным приложением. Не могли бы вы...

Клиент-серверное приложение
Пишу упрощенный чатик. Возникла проблема с клиентской частью приложения. Я создал отдельный...

Клиент-серверное приложение C++
Необходимо реализовать клиент-серверное приложение, которое будет передавать файл, с использованием...

Клиент-серверное приложение на C++
Здравствуйте. Хочу заняться разработкой клиент-серверного приложения на C++. Язык я знаю на...


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

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