Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> connect(), Socket, ECB 2010 
V
    Опции темы
Kirgston
Дата 13.10.2009, 13:23 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 792
Регистрация: 24.12.2007

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



Всем доброго времени суток! Вопросик вот в чем...

Код

//---------------------------------------------------------------------------
#include <windows.h>
#include <iostream.h>
#include <winsock2.h>

SOCKADDR_IN socketaddr;
SOCKET sock;
void SocketConnect();
void SocketCreate();
void SocketInitialize();
void SocketGetHostName();
void SocketClean();
void SocketClose();
void SocketBind();
//---------------------------------------------------------------------------
void main()
{
   SocketInitialize();
   SocketGetHostName();
   SocketCreate();
   SocketBind();
   SocketConnect();
   SocketClose();
   SocketClean();
   system("pause");
}
//---------------------------------------------------------------------------
void SocketInitialize()
{
   WSADATA wsaData;
   if (WSAStartup(MAKEWORD(2,2),&wsaData))
   {
       cout<<"Can`t initialize socket!\n";
   }
   else
   {
       cout<<"Socket initialized!\n";
   }
}
//---------------------------------------------------------------------------
void SocketGetHostName()
{
   char info[64]={0};
   if (gethostname(info,sizeof(info)) )

        cout<<"Can`t get Host Name!\n";
   else
        cout<<"Host Name: "<<info<<"\n";

}
//---------------------------------------------------------------------------
void SocketClean()
{
   if (WSACleanup())
        printf("Can`t clean Socket!\n");
   else
        printf("Socked cleaned!\n");

}
//---------------------------------------------------------------------------
void SocketCreate()
{
   sock=socket(AF_INET,SOCK_STREAM,NULL);
   if (sock==INVALID_SOCKET) {
        cout<<"Can`t create socket!\n";
   }
   else
   {
        cout<<"Socket created!!!\n";
   }
}
//---------------------------------------------------------------------------
void SocketClose()
{
   closesocket(sock);
}
//---------------------------------------------------------------------------
void SocketBind()
{

socketaddr.sin_family = AF_INET;
socketaddr.sin_addr.s_addr  = INADDR_ANY;
socketaddr.sin_port = htons(80);

if (bind(sock,(LPSOCKADDR)&socketaddr,sizeof(socketaddr)) == SOCKET_ERROR)
{
    printf("Error bind socket");
}
else
{
printf("Socket binded!\n");
}

}
//---------------------------------------------------------------------------
void SocketConnect()
{
    if (connect(sock,(sockaddr *)&socketaddr,sizeof(socketaddr) )==SOCKET_ERROR ) {
        cout<<"Can`t connect to socket!\n";
    }
    else
    {
        cout<<"Connect to socket established\n";
    }
}


Вроде всё правильно сделал но постоянно пишет Can`t connect to socket!. Что у меня не так?
PM MAIL   Вверх
xvr
Дата 13.10.2009, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата

Вроде всё правильно сделал но постоянно пишет Can`t connect to socket!. Что у меня не так? 


Цитата

Код

socketaddr.sin_family = AF_INET;
socketaddr.sin_addr.s_addr  = INADDR_ANY;
socketaddr.sin_port = htons(80);

....

    if (connect(sock,(sockaddr *)&socketaddr,sizeof(socketaddr) )==SOCKET_ERROR ) {

Это надо понимать как 'приконнектите меня куда нибудь!'  smile 
В socketaddr.sin_addr.s_addr должен быть IP реального хоста, куда надо коннектится
(Для локального хоста надо подать 127.0.0.1)

PS. bind для клиента необязателен

PM MAIL   Вверх
GremlinProg
Дата 13.10.2009, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



по сокетам всегда можно посмотреть готовые

клиент: http://msdn.microsoft.com/en-us/library/ms737591(VS.85).aspx
сервер: http://msdn.microsoft.com/en-us/library/ms737593(VS.85).aspx

и найти в них различия, чтобы не делать ошибок

клиент уже по-определению должен коннектиться к серверу


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
Kirgston
Дата 13.10.2009, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 792
Регистрация: 24.12.2007

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



Цитата(xvr @  13.10.2009,  14:12 Найти цитируемый пост)
Это надо понимать как 'приконнектите меня куда нибудь!'   

Да да мне хоть кудато  smile 
Просто читал щас First Steps о сокетах вот там такое и было ))))) . А сам не мог понять что к чему т.к. бинд проходил удачно а уже на конекте падало...

хе хе спасибо большое! smile

Добавлено через 56 секунд
Цитата(GremlinProg @  13.10.2009,  15:48 Найти цитируемый пост)
по сокетам всегда можно посмотреть готовыеклиент: http://msdn.microsoft.com/en-us/library/ms737591(VS.85).aspxсервер: http://msdn.microsoft.com/en-us/library/ms737593(VS.85).aspxи найти в них различия, чтобы не делать ошибокклиент уже по-определению должен коннектиться к серверу

И вам благодарен!  smile 

PM MAIL   Вверх
DrHex
Дата 15.10.2009, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 2.5.2009

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



Читай МСДН Kirgston или кто там по сокетам стреляет ну он еще по никсы...... Забыл.. Капец какой то.
--------------------
google.com и это все.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




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


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

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