Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.08.2011, 09:13   #1
teapot
Пользователь
 
Регистрация: 04.12.2010
Сообщений: 23
Лампочка Ошибка при создании сокета

Добрый день!

Пытаюсь написать простейшие клиент и сервер для передачи сообщения, но при создании сокета в консоли выводится ошибка socket: Error 0 (и у клиента, и у сервера). Билдер шестой.

Подскажите, пожалуйста - может, нужно что-то ещё подключить. Вот код для сервера:

Код:
#include <stdio.h>
#include <winsock2.h>
#include <windows.h>
 
#include <conio.h>
#include <vcl.h>
 
#pragma hdrstop
#pragma argsused
int main()
{
    int sock, listener;
    struct sockaddr_in addr;
    char buf[1024];
    int bytes_read;
 
    listener = socket(AF_INET, SOCK_STREAM, 0);
    
    if(listener < 0)
    {
        perror("socket");
        getch();
        exit(1);
    }
    
    addr.sin_family = AF_INET;
    addr.sin_port = htons(666);
    addr.sin_addr.s_addr = htonl(INADDR_ANY);
    if(bind(listener, (struct sockaddr *)&addr, sizeof(addr)) < 0)
    {
        perror("bind");
        getch();
        exit(2);
    }
 
    listen(listener, 1);
 
    while(1)
    {
        sock = accept(listener, NULL, NULL);
        if(sock < 0)
        {
            perror("accept");
            getch();
            exit(3);
        }
 
        while(1)
        {
            bytes_read = recv(sock, buf, 1024, 0);
 
            if(bytes_read <= 0) break;
            send(sock, buf, bytes_read, 0);
         }
    
 
    }
 
    closesocket(sock);
 
    getch();
    return 0;
}
teapot вне форума Ответить с цитированием
Старый 10.08.2011, 11:03   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а где вызов WSAStartup?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 10.08.2011, 11:30   #3
teapot
Пользователь
 
Регистрация: 04.12.2010
Сообщений: 23
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
а где вызов WSAStartup?
Спасибо, получилось!
Вот работающий код, может, кому-нибудь пригодится.



Код:
//---------------------------------------------------------------------------
#include <stdio.h>
#include <winsock2.h>
#include <windows.h>

#include <conio.h>
#include <vcl.h>

#pragma hdrstop
#pragma argsused

WSADATA ws;//информация о сокете

int main()
{
    int sock, listener;
    struct sockaddr_in addr;
    char buf[1024];
    int bytes_read;

    if (FAILED (WSAStartup (MAKEWORD( 1,1 ), &ws)))
    {
       printf("Error in WSAStartup(...)\n");
       return 1;
    }

    listener = socket(AF_INET, SOCK_STREAM, 0);
    
    if(listener < 0)
    {
        perror("socket");
        getch();
        exit(1);
    }
    addr.sin_family = AF_INET;
    addr.sin_port = htons(666);
    addr.sin_addr.s_addr = htonl(INADDR_ANY);
    if(bind(listener, (struct sockaddr *)&addr, sizeof(addr)) < 0)
    {
        perror("bind");
        getch();
        exit(2);
    }

    listen(listener, 1);
    while(1)
    {
        sock = accept(listener, NULL, NULL);
        if(sock < 0)
        {
            perror("accept");
            getch();
            exit(3);
        }

        while(1)
        {
            bytes_read = recv(sock, buf, 1024, 0);

            if(bytes_read <= 0) break;
            send(sock, buf, bytes_read, 0);
        }
    
        closesocket(sock);
        getch();
    }
    return 0;
}
teapot вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при создании домена JustPunk Помощь студентам 2 18.05.2011 19:48
Ошибка при создании таблицы ProgDel БД в Delphi 5 07.11.2010 11:31
Ошибка при создании DLL drknn Общие вопросы Delphi 5 30.04.2010 11:02
Ошибка при создании таблицы LAGOX SQL, базы данных 1 28.03.2009 00:46
Ошибка при создании типа Monte-Kristo Помощь студентам 4 04.03.2009 19:51