Ошибки соединения Client - Server

Тема в разделе "WASM.BEGINNERS", создана пользователем probka, 25 апр 2008.

  1. probka

    probka New Member

    Публикаций:
    0
    Регистрация:
    11 фев 2008
    Сообщения:
    170
    У меня на одном компе СЕРВЕР, а на другом КЛИЕНТ.

    Я сделал так, чтоб в момент вызова СЕРВЕРа, он уже был активирован и готов работать с КЛИЕНТОМ.

    Код (Text):
    1. void __fastcall TForm1::FormActivate(TObject *Sender)
    2. {
    3. Server->Active = true;
    4. Timer1->Enabled = true;
    5. }
    Клиент у меня сконфигурирован так, что в момент вызова его, он сразу коннектится с сервером, по заранее прописанному PORTу и IP адрессу. Я поставил задержку, если СЕРВЕР не на связи, повторить попытку подключения через 5 секунд.

    Код (Text):
    1. __fastcall TForm1::TForm1(TComponent* Owner)
    2.         : TForm(Owner)
    3. {        
    4.       Client->Open() ;  // коннектимся
    5.       Memo1->Lines->Add("коннектимся");
    6. }
    Код (Text):
    1. void __fastcall TForm1::ClientError(TObject *Sender,
    2.       TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)
    3. {
    4.    ErrorCode = 0;
    5.  
    6.       Client->Close();
    7.       Timer1->Enabled = true;
    8.       flag2[0] = 1;
    9. }
    Код (Text):
    1. void __fastcall TForm1::Timer1Timer(TObject *Sender)
    2. {  
    3.    if(flag2[0] == 1)
    4.    {
    5.    TInterval[0] = TInterval[0] + 1;
    6.  
    7.       if(TInterval[0] == 5)
    8.       {
    9.          TInterval[0] = 0;
    10.  
    11.          Client->Open();
    12.          Memo1->Lines->Add(Memo1->Lines->Add("коннектимся"));
    13.        }
    14.     }
    15. }
    Если вызываю вначале СЕРВЕР, а потом КЛИЕНТ, то все работает.
    Если вызываю вначале КЛИЕНТ, а потом СЕРВЕР, то КЛИЕНТ почему то не может приконектится самостоятельно к уже работающему серверу.

    Посмотрите, пожалуйста, я незнаю, может дополнительно нужно, если нет коннекта у клиента, то есть СЕРВЕР не активирован, подключать какие-то функции? Только какие?
     
  2. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    Какие то непонятные куски кода. Что делает Client->Open()?
    PS Вам уже кажется сказали, где корректно спрашивать по BCB.
     
  3. Com[e]r

    Com[e]r Com[e]r

    Публикаций:
    0
    Регистрация:
    20 апр 2007
    Сообщения:
    2.624
    Адрес:
    ого..
    +1.
    неужели настолько сложен winsock? он же элементарен!
    имхо даже проще чем эта объектная параш.. кхм.. *чушь.

    ладно, пробка, что ты вобще пишешь? это модуль к сетевому тетрису?
     
  4. probka

    probka New Member

    Публикаций:
    0
    Регистрация:
    11 фев 2008
    Сообщения:
    170
    Comer_, это фича такая, наверно слышал, прога для обмена файлами по сети. Через прокси. Я делаю последовательно. У меня сначала будет версия 1.0, потом 2.0 и тд.
    У меня есть все албомы Dire Straits :))

    Гляньте, где может быть ошибка?
     
  5. Kuzz_

    Kuzz_ New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2008
    Сообщения:
    2
    if(TInterval[0] == 5)
    Т.е. на пятой секунде коннектимся.
    А если TInterval[0] == 6 (и больше - серсер не стартовал в течение 5-ти сек.)
    Может if(TInterval[0] > 5)
     
  6. probka

    probka New Member

    Публикаций:
    0
    Регистрация:
    11 фев 2008
    Сообщения:
    170
    Kuzz_, будет то же самое.
     
  7. Com[e]r

    Com[e]r Com[e]r

    Публикаций:
    0
    Регистрация:
    20 апр 2007
    Сообщения:
    2.624
    Адрес:
    ого..
    б*ля ты даже не представляешь как вырос в моих глазах ))
    кароче смотри, я спросони можт и чего не замечаю, но запуская клиент у тебя так:
    @@:
    tinterval++
    если tinterval==5
    коннектимся.
    неполучилось.
    jmp @B

    то есть у тебя коннект происходит ТОЛЬКО если tinterval[0] равен пяти.
    убери лучше условие. это же таймер в конце концов..

    кста я такую прогу писал недавно, когда задолбало по wifi через ftp гнать,
    но на чистых сокетах, и заняло оч мало кода и времени.

    и классическое пожелание:
    выбросил бы ты этот vcl или как там оно на билдере..
    совсем несложно писать на winapi формы, если ты их боишься!
    а если тебя пужает то же создание окна, то есть методы полегче - нарисовал форму мышкой в ResHack"е,
    подргузил DialogParam.. зато производительность в плюс, навыки в плюс, этот вцл мозг ест ведь, по себе помню..
     
  8. probka

    probka New Member

    Публикаций:
    0
    Регистрация:
    11 фев 2008
    Сообщения:
    170
    Comer_, ResHack это действительно крототень. Спасибо большое. С кодом я разобрался.

    Вот такой вопрос, правда не в тему:

    Есть специальный Азм, под виндовс. Он работает по адресам виндовс, так же, как обыкновенный Азм работал бы под ДОС.
    Вопрос: при сранении по быстродействию, Азм под вин. и Азм под ДОС, кто быстрее?

    Как програмно закрыть порты сетевухи, чтоб невозможно было войти ко мне в сеть? (можно С++, С, Азм, и даже Pascal)

    Все что поступает в комп из сети, складируется туда, куда в начале этого поступающего кода предусмотрено.
    ЧТО в компе отвечает за эту внутреннюю маршрутизацию и какие 'ЭТО' имеет адреса, и какие ф-ии?
    Как сделать так, чтоб вначале эта инфа поступала в буфер, например массив, а потом следовала туда, куда и предназначалась?

    У меня еще "юту" есть.
     
  9. Com[e]r

    Com[e]r Com[e]r

    Публикаций:
    0
    Регистрация:
    20 апр 2007
    Сообщения:
    2.624
    Адрес:
    ого..
    из 4го абзаца становится ясно что Азм это не имя хача, а специфическое написания слова асм ¦))
    программно видимо из дрова, или закрывать чужие сокеты и самому биндить глухие бинды на месте этих портов.
    буффер.. массив.. почитай faq по написанию снифферов.
    а вобще лучше изучи структуру сети, правила маршрутизации пакетов и подобный бейсис.
    в этом деле либо на примерах и долго, либо чтения не избежать.

    чувак, ну ты сравнил =\ хотя юту у меня тоже есть, и люблю)
     
  10. probka

    probka New Member

    Публикаций:
    0
    Регистрация:
    11 фев 2008
    Сообщения:
    170
    Comer_, посоветуй, пожалуйста, литературу, именно об этом. Под ДОС и под Винд.

    Я не сравнивал, конечно, они не сравнимы ...
     
  11. Com[e]r

    Com[e]r Com[e]r

    Публикаций:
    0
    Регистрация:
    20 апр 2007
    Сообщения:
    2.624
    Адрес:
    ого..
    чувак, я незнаю, на васме правда очень много литры.
    на самом деле странно мне, когда народ на форуме васма говорит
    "посоветуйти чонить почитать", ведь всё же есть на самом васме!..
     
  12. probka

    probka New Member

    Публикаций:
    0
    Регистрация:
    11 фев 2008
    Сообщения:
    170
    Comer_, мне нужно что-нить в тему по портам, программным примерам, маршрутизаторам, внутренним и внешним.
    Можно по протоколам и составлению пакета в зависимости от того, куда я его посылаю. То есть что должно быть обязательно. Желательно, чтоб все это в тоненькой книжечке было. Сама соль. Без "мозго-е*алова". У меня разум и так уже на завязочках держится.

    Dire Straits, рулез, все мечтаю на концерте побывать ...
     
  13. Com[e]r

    Com[e]r Com[e]r

    Публикаций:
    0
    Регистрация:
    20 апр 2007
    Сообщения:
    2.624
    Адрес:
    ого..
    берём сорцес.ру

    http://sources.ru/cpp/tcp_doc.shtml
    это вот.
    это как раз "мозго*балово".

    http://sources.ru/cpp/cpp_tcp_info.shtml
    тут получение статистики по портам итп..

    в целом о сокетах и прямой пример:
    http://sources.ru/cpp/cpp_pb_sockets.shtml


    одна проблема: эти человекги очень любили объекты делать в то время. придётся терпеть и фильтровать.


    уже не побываешь)
    во первых они разпались ещо в конце 90х, а во вторых единственный визит нофлера в россию был позавчера.
    и ты его про*бал))
     
  14. probka

    probka New Member

    Публикаций:
    0
    Регистрация:
    11 фев 2008
    Сообщения:
    170
    Comer_, уже там и читаю.
    Подскажи, пожалуйста, как через какой-нито прокси в инет выходить? Как к ниму подключаться, как его искать?

    Вот такой исходник:
    Код (Text):
    1. #!/usr/bin/perl
    2.  
    3. #путь к лог-файлу
    4. $LogFile="log.txt";
    5. #максимальное число записей в лог-файле
    6. $mlength=50;
    7.  
    8. #делаем редирект на картинку
    9. print "Location: image.gif\n\n";
    10.  
    11. #читаем CGI запрос
    12. read(STDIN, $input, $ENV{'CONTENT_LENGTH'});
    13. $input = $ENV{'QUERY_STRING'} if $ENV{'QUERY_STRING'};
    14. $input =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
    15.  
    16. #получаем время запроса и HTTP_REFERER
    17. $now_string = localtime;
    18. $ref = $ENV{'HTTP_REFERER'};
    19.  
    20. #читаем лог-файл в массив
    21. open (LOG,"$LogFile") || die "Can't Open $LogFile: $!\n";
    22. @LOGtext=<LOG>;
    23. close (LOG);
    24.  
    25. #открываем на запись лог
    26. open (LOG, ">$LogFile");
    27.  
    28. #сохраняем данные запроса
    29. print LOG "[$now_string] IP=$ENV{'REMOTE_ADDR'} REFERER=$ref QUERY=$input\n";
    30.  
    31. #сохраняем остальные логи, так что бы длина лог-файла не превышала mlength
    32. $counter=1;
    33. foreach $LOGitem (@LOGtext)
    34. {
    35.     if ($counter<$mlength){ print LOG "$LOGitem"; };
    36.     $counter++;
    37. };
    38.  
    39. #закрываем лог
    40. close (LOG);
    41.  
    42. exit;
    где набирать и компилить?
     
  15. Com[e]r

    Com[e]r Com[e]r

    Публикаций:
    0
    Регистрация:
    20 апр 2007
    Сообщения:
    2.624
    Адрес:
    ого..
    омг, неее, я лучше соглашусь на групповой секс с животными, чем буду кодить на пхп =\\
     
  16. probka

    probka New Member

    Публикаций:
    0
    Регистрация:
    11 фев 2008
    Сообщения:
    170
    Это PHP? епт, вот попал.

    Как на асме или С закрыть порт? Мне кто-нибудь может дать ответ?

    Читать документацию по адресации, искать тему про порты, по адресам обращения к контроллеру порта, посылать команды закрытия - открытия? Так? Где спецификацию почитать, какие команды принимает контроллер, и это все на асме? Так?

    Вот допустим, узнал я открытый порт на удаленном компе, как мне получить ком. строку с этого компа? Как обратится к ресурсам ОС?

    Что читать хоть, по теме? Если боитесь что буду вором. Не бойтесь. Не буду. И ни есть.
     
  17. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    probka
    порт закрывается WIN API
    а не смом и си
     
  18. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    probka
    я от этого прочтения чипсами подавился...
    Или я не правильно понял и наша probka
    уже работает с сетевухой чисто на портах???
     
  19. probka

    probka New Member

    Публикаций:
    0
    Регистрация:
    11 фев 2008
    Сообщения:
    170
    wsd, в ДОСе и ОС (Win, Lin) реализация етого разная. Где прозреть хоть для чего то одного? Чтоб принцип понять? ёпт, вот за это я и нелюблю Win.

    хоть первую букву функции скажи хоть

    С тем что меня интересует, я готов работать на чем угодно, хоть на чистом суахили. (Кроме PHP)

    Где посмотреть структуру(схему) с сетевой спецификой компа? Говорю на юзеро/варварском, извините.
     
  20. Com[e]r

    Com[e]r Com[e]r

    Публикаций:
    0
    Регистрация:
    20 апр 2007
    Сообщения:
    2.624
    Адрес:
    ого..
    wsd
    реально, сказал бы человеку лучше чем издеваться над ним.
    имхо АПИ чистым тут не обойтись,
    кроме как если исходный процесс не будет сообщником, можно сделать DuplicateHandle(),
    но это нам не подходит,
    значит надо внедряться в процесс и оттуда хукать бинд. но это для старта..
    значит надо accept() хукать и провоцировать его вызов.
    значит без технологий вам не обойтись.