Модераторы: feodorv
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не принемаются данные, сокеты 
V
    Опции темы
Rickert
Дата 21.2.2007, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: нет
Всего: 52



Написал сервер простой:
Код

//=====================================================

#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
#include <time.h>
#include <unistd.h>
#include <stdio.h>

//=====================================================

int main()
{
    struct sockaddr_in addr;

    memset(&addr, 0, sizeof(addr));
    addr.sin_family = AF_INET;
    addr.sin_port = htons(1200);
    addr.sin_addr.s_addr = INADDR_ANY;
    
    int sock = 0, c_sock = 0;

    sock = socket(PF_INET, SOCK_STREAM, 0);
    if (sock > 0)
        printf("Socket established...%d\n", socket);
    else
    {
        perror("Can't establishe socket - ");
        return 0;
    }
    if (bind(sock, (struct sockaddr*)&addr, sizeof(addr)) == 0 )
        printf("Socket was binded...\n");
    else
    {
        perror("Can't bind socket - ");
        return 0;
    }
    
    listen(sock, 5);

    while(1)
    {
        c_sock = accept(sock, NULL, NULL);

        if (c_sock > 0)
        {
            printf("Connection with client established. Trying to send data...\n");
            
            char buf[6] = {"There"};
            memset(buf, 0, 6);
            //write(c_sock, buf, strlen(buf));
            int len = send(sock, buf, sizeof(buf), 0);
            printf("Sended - %d", len);
            printf("Data has been sended without any checking\n Shuting down sockets and closing them...\n");
            shutdown(c_sock, 0);
            close(sock);
            break;
        }
    }

    return 0;
}

//=====================================================

И клиент к нему:
Код

//==================================================================

#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
#include <unistd.h>
#include <stdio.h>

//==================================================================

int main()
{
    struct sockaddr_in addr;
    
    memset(&addr, 0, sizeof(addr));
    addr.sin_family = AF_INET;
    addr.sin_port = htons(1200);
    addr.sin_addr.s_addr = inet_addr("000.000.000.000");

    int sock = 0;

    sock = socket(PF_INET, SOCK_STREAM, 0);
    if (sock > 0)
        printf("Socket established...%d\n", socket);
    else
    {
        perror("Can't establishe socket - ");
        return 0;
    }
    connect(sock, (sockaddr*)&addr, sizeof(addr));
    
    char buf[6];
    
    memset(buf, 0, 6);
    //read(sock, buf, 5);
    recv(sock, buf, sizeof(buf), 0);
    printf("Recieved data: \"%s\"\n Shuting down the sockets and closing them...\n", buf);
    shutdown(sock, 0);
    close(sock);

    return 0;
}

//==================================================================


Такая ситуация: запускаю сервер, идёт ожидание, запускаю клиент - он выполняется, но данных не принемает. Смотрю что в консоле кидал сервер, в результате, не вижу сообщения "Data has been sended without any checking\n Shuting down sockets and closing them..." Следовательно, программа почему-то самозавершется на попытке отправки пакета. Что за маза?

Сижу под Альт Линуксом, работаю на бездисковом терминале через XDMCP

Нашёл ошибку, я посылал данные на сокет, а не сокет клиента.
Надо поменять 
Код

int len = send(sock, buf, sizeof(buf), 0);

На
Код

int len = send(c_sock, buf, sizeof(buf), 0);

Но клиент данные всё равно не получает, говорит, что строка пустая и всё.


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
Rickert
Дата 21.2.2007, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: нет
Всего: 52



Протупил: зануляю массив, после указания


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0406 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.