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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.07.2011, 14:21   #1
Selince
 
Регистрация: 10.10.2009
Сообщений: 3
По умолчанию eclipse+winsock

OS: Windows 7
Компилятор: MinGW 4.5.3
Среда: eclipse indigo CDT

Код:

#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <process.h>
#include <windows.h>
#include <winsock2.h>
#include <ws2tcpip.h>

#define SERV_PORT 47808

int main(void)
{
WSADATA WSAStartData;
SOCKET s_socket, socket_io;
SOCKADDR_IN serv_addr, connect_addr;
int addr_len;

setbuf(stdout, NULL);
printf("Start Test Server\n");

#ifdef _WIN32
WSAStartup(MAKEWORD(2,0), &WSAStartData);
#endif

printf("Open socket\n");

s_socket = socket(AF_INET, SOCK_STREAM, 0);
if (s_socket == INVALID_SOCKET)
{
printf("OPEN SOCKET ERROR: %i\n", WSAGetLastError());
exit(1);
}

memset(&serv_addr, 0, sizeof(serv_addr));

serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
serv_addr.sin_port = htons(SERV_PORT);

printf("Bind socket\n");

if (bind(s_socket, (SOCKADDR *) &serv_addr, sizeof(serv_addr)) == SOCKET_ERROR)
{
printf("BIND SOCKET ERROR!\n");
exit(1);
}

printf("Listen socket\n");

if (listen(s_socket, 5) == -1)
{
printf("LISTEN SOCKET: %i\n", WSAGetLastError());
exit(1);
}
printf("Accept socket\n");

addr_len = sizeof(connect_addr);
socket_io = accept(s_socket, (SOCKADDR *) &connect_addr, &addr_len);

printf("Shutdown sockets\n");
shutdown(socket_io, 2);
shutdown(s_socket, 2);

printf("Close sockets\n");
closesocket(socket_io);
closesocket(s_socket);

WSACleanup();

printf("End test programm\n");

return 0;
}


Столкнулась со следующей проблемой. Из cmd Windows и при отладке в GDB код прекрасно работает.
А вот только нажимаешь Run в среде, получаем на строчке s_socket = socket(AF_INET, SOCK_STREAM, 0); ошибку 10106.

На MSDN написано про эту ошибку:
"Поставщик услуг был не в состоянии инициализировать.
Требуемый поставщик услуг не мог быть загружен или инициализирован. Эта ошибка возвращена, если любой DLL поставщика услуг не мог бы быть загружен (отказавший LoadLibrary) или WSPStartup провайдера или отказавшая функция NSPStartup."

Хотелось бы все-таки иметь возможность исполнять код непосредственно в eclipse. Кто-нибудь сталкивался с подобной проблемой?

РЕШЕНО: Run->Run Configurations->Envirovment->Add->Variable: PATH; Value: %SystemDir%

Последний раз редактировалось Selince; 30.07.2011 в 15:50.
Selince вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
c++ и Eclipse wadzik Общие вопросы C/C++ 1 20.06.2011 00:59
Java в eclipse raIto Помощь студентам 0 27.05.2011 17:00
Eclipse и подсказки LAGOX PHP 0 30.06.2009 23:10
Eclipse europa oleg kutkov Софт 0 12.04.2009 13:00
Eclipse SDK + БД Carbon Java Базы данных (JDBC, JPA, Hibernate) 4 10.10.2007 09:02