Конференция "Сети" » сокеты и ip
 
  • Галинка (27.06.08 12:30) [0]
    пробую написать программку, которая свяжется через сокет с удоленным компом. При создании сокета, его конструктору передается два параметра: адрес и порт. Адрес можно передать либо именем (т.е. www.delphimaster.ru), либо сразу целым. Но у меня есть только ip. Как это преобразовать?
  • Zeqfreed © (27.06.08 12:41) [1]
    inet_aton() converts the Internet host address  cp  from  the  standard
          numbers-and-dots  notation into binary data and stores it in the struc-
          ture that inp points to.  inet_aton() returns non-zero if  the  address
          is valid, zero if not.
  • umbra © (27.06.08 12:50) [2]
    inet_addr из winsock
  • Галинка (27.06.08 13:06) [3]
    спасибо. Нашла вроде бы. Даже соединилась. А как теперь разъединиться?
  • umbra © (27.06.08 13:07) [4]
    сокет.close :)
  • Галинка (27.06.08 13:26) [5]
    umbra ©   (27.06.08 13:07) [4]

    не а... Не дисконнектится (((
  • umbra © (27.06.08 13:32) [6]

    > не а... Не дисконнектится (((
    >

    а откуда известно, что не дисконнектится?
  • Галинка (27.06.08 14:12) [7]
    umbra ©   (27.06.08 13:32) [6]

    он может и дисконнектится, но принимающий комп не переходит обратно в режим ожидания.
  • clickmaker © (27.06.08 14:26) [8]
    > но принимающий комп не переходит обратно в режим ожидания

    а в каком он режиме остается?
  • Галинка (27.06.08 14:36) [9]
    Когда на подключено, светится надпись

    ... waiting for TCP/IP-Client

    когда подключено ее нет.

    Так вот, когда я закрываю сокет комментарий этот не появляется вновь. Поэтому я думаю, что система занята.
  • wl © (27.06.08 14:53) [10]
    может не обновляется индикация состояния? что если вообще инет отрубить?
  • grisme (27.06.08 21:38) [11]
    может сервер немного неправильный? :)
  • umbra © (28.06.08 14:22) [12]

    > он может и дисконнектится, но принимающий комп не переходит
    > обратно в режим ожидания.

    а чего он должен туда переходить? сервер же может и не узнать, что клиент отключился. Вот и ждет. Вообще неплохо бі узнать, с пмощью чего ві коннектитесь и дисконнектитесь :)
  • Галинка (28.06.08 23:59) [13]
    umbra ©   (28.06.08 14:22) [12]

    в смысле? Просто пишу в яве Socket clSock = new Socket (<host>, <port>) и все. Я уже как бы на удаленной машине.

    ПыСы: нашла я методом тыка, что надо "удаленной машине" послать сообщение выход. Тогда она снова ожидает подключения. Но, теперь появилась другая трабла. Не могу понять какя из двух машин быстрее, но принимающая не может принять всю передаваемую строку. Она считывает из буфера макс. два символа, а потом вероятно буфер перезаписывается. Приходится вставлять sleep. Является ли "хорошим тоном, программирование соединения через сокеты в отдельном потоке?
  • umbra © (29.06.08 02:30) [14]

    > Является ли "хорошим тоном, программирование соединения
    > через сокеты в отдельном потоке?
    >

    Это наилучший тон для сервера - каждый клиент в своем потоке
  • Галинка (29.06.08 13:04) [15]
    тогда еще один вопрос. Всегда ли необходим ServerSocket?
  • umbra © (29.06.08 14:35) [16]

    > Всегда ли необходим ServerSocket?

    Что собственно имеется в виду? Серверный сокет - это сокет, который ожидает подключений. И он необходим, чтобы установить соединение
  • Галинка (29.06.08 17:50) [17]
    т.е. в приложении должно быть обязательно два сокета, один которые простой, и второй - срверный?
  • Anatoly Podgoretsky © (29.06.08 17:57) [18]
    В приложение должно быть столько сокетов, сколько требуется, минимум один.
  • clickmaker © (30.06.08 17:15) [19]
    > т.е. в приложении должно быть обязательно два сокета, один
    > которые простой, и второй - срверный?

    то есть?
    я всегда думал, что на сервере - серверный, на клиенте - клиентский.
    Цесарю - цесарево, слесарю - слесарево
Есть новые Нет новых   [134432   +20][b:0][p:0.001]