информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Сетевые кракеры и правда о деле ЛевинаАтака на Internet
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[C++] connect на ровном месте возвращает 1, кто знает описание ЕЙ 05.06.01 16:39  
Автор: Delimiter Статус: Незарегистрированный пользователь
<"чистая" ссылка>
client1 = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP);
memset ((char *)&clnt_sin, '\0',sizeof(clnt_sin));
clnt_sin.sin_family = AF_INET;
clnt_sin.sin_addr.s_addr = INADDR_ANY;
clnt_sin.sin_port = 4444;
int m=bind (client1, (struct sockaddr *)&clnt_sin,sizeof(clnt_sin));
if(m!=0)
{
m_str1+=CString("Result Bind:");
m_str1+=CString(itoa(m,mybuf2,10));
m_str1+=CString("\r\n");
}
memset ((char *)&srv_sin, '\0',sizeof(srv_sin));
srv_sin.sin_family = AF_INET;
memcpy ((char*)&srv_sin.sin_addr,(char *)&ClAddr.sin_addr,4);
srv_sin.sin_port = 2222;
m=connect (client1,(struct sockaddr *) &srv_sin, sizeof(srv_sin));
if(m!=0)
{
m_str1+=CString("Result Connect:");
m_str1+=CString(itoa(m,mybuf2,10));
m_str1+=CString("\r\n");
}
[C++] connect на ровном месте возвращает 1, кто знает описание ЕЙ 05.06.01 17:19  
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
не совсем ровное вообще то. проследи за " ^^^^^^ "

> client1 = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP);
> memset ((char *)&clnt_sin, '\0',sizeof(clnt_sin));
> clnt_sin.sin_family = AF_INET;
> clnt_sin.sin_addr.s_addr = INADDR_ANY;
> clnt_sin.sin_port = 4444;
^^^^^^^^^^ clnt_sin.sin_port = htos(4444);
> int m=bind (client1, (struct sockaddr
> *)&clnt_sin,sizeof(clnt_sin));
> if(m!=0)
> {
> m_str1+=CString("Result Bind:");
> m_str1+=CString(itoa(m,mybuf2,10));
> m_str1+=CString("\r\n");
> }
> memset ((char *)&srv_sin, '\0',sizeof(srv_sin));
> srv_sin.sin_family = AF_INET;
> memcpy ((char*)&srv_sin.sin_addr,(char
> *)&ClAddr.sin_addr,4);
^^^^^^^^^ что за ClAddr.sin_addr? адрес у него правильный ? не забудь про htol(u_long addr);
> srv_sin.sin_port = 2222;
^^^^^^^^^ srv_sin.sin_port = htos(2222);
> m=connect (client1,(struct sockaddr *) &srv_sin,
> sizeof(srv_sin));
> if(m!=0)
> {
> m_str1+=CString("Result Connect:");
> m_str1+=CString(itoa(m,mybuf2,10));
> m_str1+=CString("\r\n");
> }

и еще, если Win32, то вызови при ошибке WSAGetLastError(); посмотри что за код возвращает, думаю так тебе понятней буде найти на каком месте спотыкается

и еще, можно сделать некоторые изменения
> clnt_sin.sin_family = AF_INET;
> clnt_sin.sin_addr.s_addr = INADDR_ANY;
^^^^^ тут намого целесообразнее указать локальный адрес
> clnt_sin.sin_port = 4444;
^^^^^^ а тут вообще можно clnt_sin.sin_port = 0; - это же клиентская часть, для него монопенисно к какому порту баундиться.
[C++] connect на ровном месте возвращает 1, кто знает описание ЕЙ 05.06.01 17:42  
Автор: Delimiter Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> не совсем ровное вообще то. проследи за " ^^^^^^ "
>
> > client1 = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP);
> > memset ((char *)&clnt_sin, '\0',sizeof(clnt_sin));
> > clnt_sin.sin_family = AF_INET;
> > clnt_sin.sin_addr.s_addr = INADDR_ANY;
> > clnt_sin.sin_port = 4444;
> ^^^^^^^^^^ clnt_sin.sin_port = htos(4444);
> > int m=bind (client1, (struct sockaddr
> > *)&clnt_sin,sizeof(clnt_sin));
> > if(m!=0)
> > {
> > m_str1+=CString("Result Bind:");
> > m_str1+=CString(itoa(m,mybuf2,10));
> > m_str1+=CString("\r\n");
> > }
> > memset ((char *)&srv_sin, '\0',sizeof(srv_sin));
> > srv_sin.sin_family = AF_INET;
> > memcpy ((char*)&srv_sin.sin_addr,(char
> > *)&ClAddr.sin_addr,4);
> ^^^^^^^^^ что за ClAddr.sin_addr? адрес у него правильный ?
> не забудь про htol(u_long addr);
> > srv_sin.sin_port = 2222;
> ^^^^^^^^^ srv_sin.sin_port = htos(2222);
> > m=connect (client1,(struct sockaddr *) &srv_sin,
> > sizeof(srv_sin));
> > if(m!=0)
> > {
> > m_str1+=CString("Result Connect:");
> > m_str1+=CString(itoa(m,mybuf2,10));
> > m_str1+=CString("\r\n");
> > }
>
> и еще, если Win32, то вызови при ошибке WSAGetLastError();
> посмотри что за код возвращает, думаю так тебе понятней
> буде найти на каком месте спотыкается
>
> и еще, можно сделать некоторые изменения
> > clnt_sin.sin_family = AF_INET;
> > clnt_sin.sin_addr.s_addr = INADDR_ANY;
> ^^^^^ тут намого целесообразнее указать локальный адрес
> > clnt_sin.sin_port = 4444;
> ^^^^^^ а тут вообще можно clnt_sin.sin_port = 0; - это же
> клиентская часть, для него монопенисно к какому порту
> баундиться.


ооооо позор на мою тупую башку я по несуществующему htos
раз сто глазами проходил....
а тебя kabanchik .... я бы пивом напоил.....
если будешь собиратся на кипр мыльни встречу в Никосии и напьемся :))
Smal1964@yahoo.com
я в С++ временами программю а 12 часов в день в VOS6 & VOS7 Parity

....а.... int WSAGetLastError (void); :)
а во вторых это сервер :)) и этот код внутри обработчика FD_ACCEPT :)

ПАСИБА
ОК. 05.06.01 17:51  
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
будете проходить мимо, проходите себе дальше :-)))

ОК, и тебе спасибо, если буду, дам знать ))

удачи
ОК. 05.06.01 21:31  
Автор: Delimiter Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> будете проходить мимо, проходите себе дальше :-)))
>
> ОК, и тебе спасибо, если буду, дам знать ))
>
> удачи


теперь все Ок

нашел логическую ошибку :))
bind -нуно делать только один раз хотя и так новому отказывают а первый остается.... ичо раз пасиба
сейчас у меня обе стороны сервера при выключение и последующем включении одной или обеих сторон связь автовостанавливается ...
ОК. 05.06.01 22:03  
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> bind -нуно делать только один раз хотя и так новому
> отказывают а первый остается.... ичо раз пасиба

тебе видней, но можно bind-ить несколько раз. для этого надо:

SOCKET s;
.............
BOOL bReuse = TRUE;
setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (const char*)&bReuse, sizeof(BOOL));
bind(...);

подробнее об этом почитай в MSDN-e
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach