Команда открывает сетевое TCP-соединение.
socket ?options? host port socket -server command ?options? port
Эта команда открывает сетевое соединение и возвращает идентификатор канала, который может использоваться в последующих командах read, puts или flush. В настоящее время поддерживается только протокол TCP. Команда может использоваться для открытия соединения как со стороны сервера, так и со стороны клиента.
Если опция -server не указана, то канал открывается со стороны клиента, и возвращаемый идентификатор канала может быть использован для операции чтения и записи. Аргументы port и host задают порт для соединения. По данному порту должен быть сервер, обслуживающий соединение. Аргумент port должен быть целым числом, а host - адресом машины в доменном стиле (например, www.sunlabs.com) или числовым IP-адресом (например, 127.0.0.1). Для ссылки на локальную машину, на которой выполняется команда, можно использовать значение localhost.
Для задания дополнительной информации о соединении можно использовать следующие опции.
Если в команде присутствует опция -server, то новый сокет будет сервером для порта port. Tcl будет автоматически устанавливать соединения по данному порту. Для каждого соединения будет создаваться новый канал, который может быть использован для связи с клиентом. При этом Tcl выполняет команду command с тремя дополнительными аргументами: имя нового канала, адрес клиентской машины в сетевой нотации и номер порта клиента.
В команде можно использовать следующие опции:
Канал сервера не может быть использован для приема или выдачи данных. Его единственное назначение - принимать новые клиентские подсоединения. Каналы, открываемые для каждого клиентского соединения, открываются на чтение и запись. Закрытие серверного канала вызывает отключение сервера, так что никаких новых соединений не может быть выполнено. Однако существующие соединения сохраняются.
Сокет сервера не может обнаружить новое соединение при незапущенном обработчике событий. Поэтому в приложении должен быть запущен обработчик событий, например, командой vwait.
Команда fconfigure может получить значения нескольких неизменяемых опций для сокетов: