Форум программистов, компьютерный форум, киберфорум
C++: Сети
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
50 / 31 / 4
Регистрация: 25.04.2013
Сообщений: 366
1

Соединиться с сервером и получить от него пакет

14.09.2014, 18:53. Показов 735. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Переписываю код с питона на с++ с целю освоения сокетов и т.п.
Вообщем подключаюсь к серверу lineage, при установлении связи сервер отсылает пакет на 186 байт ( проверенно на питоне), а вот на С++ мой код получает 1 символ, где ошибка?

Кликните здесь для просмотра всего текста
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
#include <winsock2.h>
#include <Windows.h>
#include <iostream>
 
using std::cout; using std::endl; using std:: cin;
const char * acc = "z6z6";
const char *pass = "koko12";
const char *SERVERADDR = "91.218.229.80";
const int port= 2106;
int main()
{
    setlocale(LC_ALL, "");
    char buff[1024];
    if (WSAStartup(MAKEWORD(1, 1), &buff) )
    {
        printf("WSAStart error %d\n", WSAGetLastError());
    }
    SOCKET my_sock;
    my_sock = socket(AF_INET, SOCK_STREAM,IPPROTO_TCP);
    if (my_sock < 0)
    {
        printf("Socket() error %d\n", WSAGetLastError());
    }
 
    sockaddr_in dest_addr;
    dest_addr.sin_family = AF_INET;
    dest_addr.sin_port = htons(port);
 
    // преобразование IP адреса из символьного в сетевой формат
    if (inet_addr(SERVERADDR) != INADDR_NONE)
        dest_addr.sin_addr.s_addr = inet_addr(SERVERADDR);
 
    if (connect(my_sock, (sockaddr *)&dest_addr, sizeof(dest_addr)))
    {
        printf("Connect error %d\n", WSAGetLastError());
    }
    printf("Соединение с %s успешно установлено\n\
           Type quit for quit\n\n", SERVERADDR);
    int nsize;
       nsize = recv(my_sock, buff, sizeof(buff)-1, 0)
        buff[nsize] = 0;
    printf("S=>C:%s", buff);
    cout << strlen(buff);
    break;
 
 
    system("pause");
}


Добавлено через 4 часа 3 минуты
Ошибку нашел, но не исправил - не куда\как считать,он 186 байт считывает ( nsize = 186 ), но в массиве не сохраняет
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.09.2014, 18:53
Ответы с готовыми решениями:

Соединиться сервером БД из апплета
Подскажите кто-нибудь насчёт соединения с сервером БД из апплета. Не могу не то что установить...

Соединиться с сервером MySQL 5.1
У кого есть рабочий примерчик на эту тему? Просто те что есть в сети устарели и с версией 5.1...

Не могу соединиться с сервером
Сервер на C# порт и ip(127.0.0.1) везде введены одинаково в манифесте прописал ...

Невозможно соединиться с удаленным сервером
System.ServiceModel.EndpointNotFoundException: Прослушивание на http://localhost:17027/ не...

1
Эксперт С++
3071 / 1409 / 425
Регистрация: 19.01.2009
Сообщений: 3,880
15.09.2014, 13:13 2
Цитата Сообщение от MousePro Посмотреть сообщение
он 186 байт считывает ( nsize = 186 ), но в массиве не сохраняет
MousePro, сохраняет, просто в buff - бинарные, а не строковые данные, а strlen - считает сколько элементов в массиве buff до элемента со значением '\0', а как раз - таки buff[1] == '\0', поэтому strlen(buff) возвращает 1.
1
15.09.2014, 13:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.09.2014, 13:13
Помогаю со студенческими работами здесь

Как соединиться с сервером по сети?
подскажите пожалуйста как скачать или получить доступ к файлу на сервере, использую сетевое...

не получается соединиться с локальным сервером
доброго времени суток, форумчане! только начали знакомство с Interbase. требуется зарегистрировать...

Не могу соединиться с сервером CS из внешнки
Ребят. С линуксом еще не знаком особо. Подскажите. У меня есть сервер кс. Я его настроил, особо...

Соединиться с сервером и ждать вызова
подскажите пожалуйста, как реализовать следующую схему: - необходимо содеиниться с сервером на...


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

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