• 0
rareMax

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

Вопрос

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

6 ответов на этот вопрос

  • 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 нужно указывать динамически.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу