Перейти к содержанию
Fire Monkey от А до Я
  • 0

Как подключаться к TCP серверу с помощью TSocket


rareMax

Вопрос

Кто-то работал с библиотекой System.Net.Socket ? Какие параметры нужно передавать во время подключения к серверу? То есть, на Инди я указываю Хост и порт и подключаюсь. А вот в System.Net.Socket.TSocket нужно гораздо больше параметров передавать:

procedure TSocket.Connect(const Name, Address, Service: string; Port: Word);

Port - ну это понятно. Думаю что Address - это типа хоста.  А вот Name и Service - вообще в непонятках. 

Так же вопрос - можно ли через имя хоста подключаться, а не через ИП

Изменено пользователем Сысоев Максим
Ссылка на комментарий

Рекомендуемые сообщения

  • 0
7 часов назад, Alexander сказал:

Тут можно посмотреть , Service  можно не указывать

Справку с самого начала смотрел. Ну я уже подключился через TNetEndpoint:

 FTCP.Connect(TNetEndpoint.Create(95, 172, 133, 164, 6670));

А вот что за параметры: Name и Service - вопрос открытый. 

Так же остается вопрос - можно ли через имя хоста подключаться, а не через ИП

Ссылка на комментарий
  • 1
  • Администраторы
  1. Значение поля Service позволяет автоматически выбрать порт для сервиса. (Возможные значения смотрите в файле C:\Windows\System32\drivers\etc\services).
  2. Значение поле Name (DNS имя) позволяет автоматически выбрать связанные с ресурсом IP адрес по имени узла. Например yandex.ru.

 

Ссылка на комментарий
  • 0
30 минут назад, Brovin Yaroslav сказал:
  1. Значение поле Name (DNS имя) позволяет автоматически выбрать связанные с ресурсом IP адрес по имени узла. Например yandex.ru.

Извиняюсь - если Name - это имя домена, тогда что такое Address ?

Ссылка на комментарий
  • 0
  • Администраторы

Если верить исходникам, то Address заполняет только IP адрес в структуре https://msdn.microsoft.com/ru-ru/library/zx63b042.aspx, В то время, как Name позволяет заполнить всю запись целиком.

 

Ссылка на комментарий
  • 0

Потратил час чтоб понять как работает эта процедура. Если кому еще нужно, то вот пример:

Цитата

 

string1:='';

string2:='192.168.0.1';

string3:='';

portword:=1234;

Socket.connect(string1,string2,string3,portword);

 

При этом обязательно все должно быть указано либо вручную, либо через переменные (если указать .connect('',ip,'',port); то будет выдавать ошибку при попытке отдебажить). Можно еще указать вручную .connect('','192.168.0.1','',1234); так тоже работает. Стало актуально, когда начал отправлять данные в потоке в сервисе, компоненты инди там не работают, а по этим сокетам нигде почти примеров нету, особенно когда ip нужно указывать динамически.

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...